Я использую 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
Будущие улучшения: поддержка пользовательских внешних ключей.