Добавление столбца в Eloquent Model без переноса -PHP - PullRequest
1 голос
/ 03 октября 2019

У меня есть старый проект, который был перенесен на разные серверы в течение многих лет. Следовательно, я не могу выполнить какие-либо команды ремесленников в проекте.

Я хочу добавить столбец «время сеанса» в существующую модель «Пользователь». Я добавил столбец в таблицу базы данных - ALTER TABLE users ADD COLUMN sessiontime VARCHAR (1025) NULL AFTER session;

В моей модели пользователя - User.php я добавил следующий код:

public function setSessiontime($sessiontime)
{
  $this->sessiontime = $sessiontime;
}

public function getSessiontime()
{
  return $this->sessiontime;
}

В одном из моих контроллеров я делаю это:

$user = User::select('id')->where('email', 'a.b@c.com')->first();
$user->sessiontime = "RANDOMString";
$user->save();

Но столбец не заполняется.

Можно ли добавить столбец всуществующий стол, без необходимости запуска ремесленника мигрировать? Спасибо

1 Ответ

0 голосов
/ 03 октября 2019

Это, вероятно, из-за стандартной защиты Laravel от массового назначения . Для любой модели Eloquent у вас есть возможность определить либо (но не оба) массив $guarded или $fillable. Массив $guarded работает как черный список свойств, которые не можно назначить по массе, а свойство $fillable работает как белый список свойств, которым массово-присваиваемый.

Чтобы решить вашу проблему, вам, вероятно, просто нужно добавить свойство sessiontime в ваш массив $fillable:

protected $fillable = [ ..., 'sessiontime'];
...