Могу ли я добавить столбец 'id' в качестве заполняемого? - PullRequest
1 голос
/ 05 июля 2019

Я хочу объявление 'id' в пользовательской таблице.Пользовательская таблица чиста от самого себя.В модели User.php есть такой синтаксис

protected $fillable = ['name','email',password']

Можно ли добавить столбец 'id' с синтаксисом $ fillable?.

И можно ли заполнить столбец 'id' без добавления имени столбцав $ заполняемый массив?

1 Ответ

0 голосов
/ 05 июля 2019

Только что увидел этот вопрос.Возможно, я не понимаю это правильно, но я вижу, как вы повторяете один комментарий в разных формах:

Моя цель - сделать уникальное число в качестве значения идентификатора

Вот чтопервичный индекс "autoincrement" делает для вас по умолчанию.Он уникален, потому что он определен как первичный и автоматически автоинкрементируется, поэтому вы получаете одно числовое значение, назначенное одной строке в таблице.

Предложение 1

Не уверен, почему вы хотите сделатьваша жизнь тяжела, претворяя в жизнь что-то, что уже было реализовано для вас.

Когда вы определяете перенос таблицы с помощью команды artisan с параметром --create, Laravel генерирует перенос таблицы со следующей строкой:

$table->increments('id');

, что означает, что он создает в вашей таблице столбец имени 'id', который является ПЕРВИЧНЫМ и АВТОМАТИЗИРОВАННЫМ для вас.

Предложение 2

Однако, если вы действительно хотите сделать это самостоятельно.Конечно, вы можете.

Массив fillable предназначен только для «массового назначения».Поэтому, если вы хотите вставить id при вставке других значений в таблицу, например, вот так:

$request['id'] = 123; //my unique number
User::create($request->all());

Где $ request, очевидно, является экземпляром фасада запроса.Затем ДА, вам нужно поместить идентификатор в массив для заполнения.

Предложение 3

Однако, если вы просто хотите изменить идентификатор отдельно для существующей модели, вы можете сделать это даже безположить его в массив fillable, например:

$user = User::where('email', $email)->first();
$user->id = 123; // my unique number
$user->save();

Надеюсь, это поможет

...