Создать запись с идентификатором

Мне нужно импортировать данные из другой базы данных и перенести их в новую базу данных. но для связи требуется идентификационная информация участников. Я тоже должен их нести. Поэтому я должен заполнить столбец 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 обычно увеличивается, и я не могу получить информацию об идентификаторах предыдущих участников.

Как лучше всего это сделать?

Где код отношений?

Niklesh Raut 20.04.2018 19:29
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
1
49
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я думаю, вы пытаетесь перенести базу данных с 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',
    ];
...

Создать - не лучшая идея брать базу данных из других таблиц. Как вы потом будете связаны, с таким же праздником наверно сработает. Но он никогда не находит, есть ли какая-либо ошибка отношения в предыдущей таблице. Как бы вы отфильтровали мусорные данные?

Niklesh Raut 20.04.2018 19:45

Это ответ на поставленный вопрос о том, почему автоинкремент обычно увеличивается, а идентификатор не соответствует тому, что он установлен в вызове create(). Вы правы в том, что, вероятно, есть лучший способ перенести данные.

Brent Dimmig 20.04.2018 20:37

Другие вопросы по теме