在不迁移到PHP的雄辩模型中添加一列

问题描述 投票:0回答:1

我有一个旧项目,多年来已经迁移到其他服务器。因此,我不能在项目上运行任何工匠命令。

我想向现有模型用户添加“会话时间”列。我在数据库表中添加了该列-ALTER TABLEusersADD COLUMNsessiontimeVARCHAR(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', '[email protected]')->first();
$user->sessiontime = "RANDOMString";
$user->save();

但是该列中没有填充。

是否可以在不运行artisan migration的情况下向现有表中添加列?谢谢

php mysql laravel eloquent migrate
1个回答
0
投票

这可能是由于Laravel针对mass assignment的默认保护。对于任何Eloquent模型,您可以选择定义[[[](但不能同时定义)$guarded$fillable数组。 $guarded数组用作可<<< [not质量可分配的属性的黑名单,而$fillable属性用作可<<< [are] >> mass-可分配的属性的白名单可分配的。要解决您的问题,您可能只需要将sessiontime属性添加到$fillable数组:protected $fillable = [ ..., 'sessiontime'];

© www.soinside.com 2019 - 2024. All rights reserved.