Всем привет
у меня есть ошибка
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
Да, в 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 );
Сборка персонального компьютера от Artline: умный выбор для современных пользователей