Проблема RedBeanPHP

207
01 декабря 2017, 06:45

Всем привет

у меня есть ошибка

An error occurred: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'field list'

Я делаю insert и у меня не id а idletter изменить не могу так как база использует другой проект, я так понимаю сам redbean работает строго с id помогите пожалуйста решить проблему, или может есть какой то костыль?

Прошу писать тем кто работал с ORM https://redbeanphp.com/index.php

Answer 1

Да, в RedBean хардкодом вбит id в качестве primary key:

https://github.com/gabordemooij/redbean/blob/c3cceb5811a6a27593b163682a124ec25bcb430d/RedBeanPHP/QueryWriter/MySQL.php#L163

https://github.com/gabordemooij/redbean/blob/c3cceb5811a6a27593b163682a124ec25bcb430d/RedBeanPHP/QueryWriter/PostgreSQL.php#L181

https://github.com/gabordemooij/redbean/blob/44229acdf493e2229c1e33e3add211f23c05ee4d/RedBeanPHP/Repository/Fluid.php#L199

https://github.com/gabordemooij/redbean/blob/c3cceb5811a6a27593b163682a124ec25bcb430d/RedBeanPHP/QueryWriter/AQueryWriter.php#L836

Решить проблему можно, написав класс, который был бы унаследован от конкретного QueryWriter (имеется в виду, что если Вы работаете с MySql, то наследоваться стоит от RedBeanPHP\QueryWriter\MySQL), и переопределив в нем методы, в которые отвечает за сохранение сущности (как минимум updateRecord() и insertRecord()) так, чтобы они "научились" понимать другие поля кроме id. Как Вы это сделаете, вобьете ли костыль под отдельную таблицу, или попробуете добавить возможность параметризировать primary key - дело Ваше. Потом этот класс наследник Вам будет необходимо подключить в проекте, вот пример кода:

    $oldToolBox = R::getToolBox();
    $oldAdapter = $oldToolBox->getDatabaseAdapter();
    $customWriter = new CustomPKWriterMySQL( $oldAdapter );
    $newRedBean = new OODB( $customWriter );
    $newToolBox = new ToolBox( $newRedBean, $oldAdapter, $customWriter );
    R::configureFacadeWithToolbox( $newToolBox ); 
READ ALSO
php сравнить адрес страницы

php сравнить адрес страницы

Хочу сравнить адрес текущей страницы с адресом страницы заданным в переменной и выполнить if, но ничего не происходит

163
Вставить элемент среди цикла foreach

Вставить элемент среди цикла foreach

Здравствуйте, есть цикл, который выводит изображение

175
Ошибка в файле mail.php

Ошибка в файле mail.php

Разработал форму для отправки писем на почту посредством ajax и все бы ничего, но на почту приходит пустое письмоСкрипт отправки js такой:

168
Многопоточный QWebSocketServer

Многопоточный QWebSocketServer

Задача: Есть три клиента которые подключаются к веб-серверу параллельноОбработка запросов от всех трех клиентов абсолютно разная

358