2016-02-07 7 views
1

Я переношу старые данные в laravel.Вставить `id` автоинкремент первичного ключевого поля явно в laravel 5.2

Что я хочу, так это сохранить предыдущие идентификаторы в новой таблице , где у меня есть поле по умолчанию $table->increments(id).

Есть ли способ в laravel, чтобы я мог явно вставить это поле id?

Как я неспособен сделать это с помощью красноречивого модель create метода:

User::create([ 
'id' => 123456, 
'first_name' => 'john', 
'last_name' => 'doe' 
]) 

Возможно ли это там?

+0

что вы хотите, автоинкремент beign с 123456? –

+0

это может быть любой, и оттуда он начинает автоматически увеличивать любое последнее значение, как я могу явно вставить в поле id.? – MM2

+0

Kinda борьба с целью поля автоинкремента. – lagbox

ответ

0

Проблема должна быть в модели пользователя. Откройте файл User.php и измените переменную $fillable. Добавьте id в массив. Переменная $fillable сообщает Eloquent, какие поля защищать от массового присваивания, как тот, который вы делаете (массовое назначение означает, что вы устанавливаете все значения сразу в своей вставке). Поэтому, даже если вы укажете id, как вы это делали в своем вызове create(), Eloquent будет игнорировать любое значение, которое вы установили, потому что это поле не является частью полей $fillable.

Так что эту переменную как:

protected $fillable = ['id', 'first_name', 'last_name'];

и вы должны быть хорошо идти (также принимая во внимание, что вы не оставили ни одного поля пустыми, которые в соответствии с миграцией пользователя не может быть пустым)

Смежные вопросы