Можно ли вручную установить ID новых строк с помощью RedBean PHP?

Я использую RedBean PHP, чтобы выгрузить некоторые данные из веб-страницы в базу данных, и мне нужно сохранить устаревшие идентификаторы, предпочтительно в качестве поля первичного ключа. Можно ли это сделать с помощью RedBean?

Когда я пытаюсь установить id так:

$bean->id = 56; 

Строка не вставлена ​​- запрос, созданный вместо этого, становится «UPDATE WHERE id = 56», который ничего не делает, поскольку запись еще не существует.

Принудительное значение для первичного индекса с автоматическим приращением просто запрашивает проблемы с условиями гонки. Я бы предложил вам создать новый столбец legacy_id вместо этого, где вы сохраните альтернативный идентификатор.

Я решил это, сначала вставив местозаполнитель с SQL exec:

  $id = 60000; $name = 'bob'; R::exec('insert into person(id) values('.$id.')'); $person = R::dispense('person'); $person->id = $id; $person->name = $name; R::store($person); 

Я начал проект redbean github для этого, первая версия поддерживает отдельные поля идентификаторов.

Вы должны сказать redbean, что имя поля id (если не « id »)

 R::getRedBean()->idFieldMap= array('adres'=>'id_adres','contact'=>'contact_id'); // settings for current database 

Будущие улучшения: поддержка пользовательских внешних ключей.

https://github.com/freelanceniek/redbeanx