Мне нужно импортировать данные из другой базы данных и перенести их в новую базу данных. но для связи требуется идентификационная информация участников. Я тоже должен их нести. Поэтому я должен заполнить столбец ID, который увеличивается как AUTOINCREMENT.
Мой контроллер миграции
public function migrate(BackupUser $buser, User $user)
{
$backup_user = $buser->get();
foreach ($backup_user as $bulk) {
$user->create([
'id' => $bulk->uye_id,
'name' => $bulk->uye_nick,
'email' => $bulk->uye_mail,
'password' => $bulk->uye_sifre,
'created_at' => $bulk->uye_tarih
]);
}
}
когда я это делаю, AUTOINCREMENT обычно увеличивается, и я не могу получить информацию об идентификаторах предыдущих участников.
Как лучше всего это сделать?






Я думаю, вы пытаетесь перенести базу данных с joomla или wordpress на laravel.
Если мне нужно это сделать. Мой подход заключался бы в том, чтобы сначала сохранить все базовые таблицы без id, а затем с сохраненным идентификатором, сгенерированным после вставки, в связанных таблицах. Итак, шаги будут
S1: store new `user` and get `id`
S2: relate with other table like `role` with `user_id`
Loop again till last row
По умолчанию поле id для User не заполняется массовым назначением, как это делаете вы. Если вы хотите назначить его, вы должны добавить 'id' в массив заполняемых полей в пользовательском классе.
приложение / User.php
...
class User extends Authenticatable
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'id', 'name', 'email', 'password',
];
...
Создать - не лучшая идея брать базу данных из других таблиц. Как вы потом будете связаны, с таким же праздником наверно сработает. Но он никогда не находит, есть ли какая-либо ошибка отношения в предыдущей таблице. Как бы вы отфильтровали мусорные данные?
Это ответ на поставленный вопрос о том, почему автоинкремент обычно увеличивается, а идентификатор не соответствует тому, что он установлен в вызове create(). Вы правы в том, что, вероятно, есть лучший способ перенести данные.
Где код отношений?