我有一个旧项目,多年来已经迁移到其他服务器。因此,我不能在项目上运行任何工匠命令。
我想向现有模型用户添加“会话时间”列。我在数据库表中添加了该列-ALTER TABLEusers
ADD COLUMNsessiontime
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', '[email protected]')->first();
$user->sessiontime = "RANDOMString";
$user->save();
但是该列中没有填充。
是否可以在不运行artisan migration的情况下向现有表中添加列?谢谢
这可能是由于Laravel针对mass assignment的默认保护。对于任何Eloquent模型,您可以选择定义[[[](但不能同时定义)$guarded
或$fillable
数组。 $guarded
数组用作可<<< [not质量可分配的属性的黑名单,而$fillable
属性用作可<<< [are] >> mass-可分配的属性的白名单可分配的。要解决您的问题,您可能只需要将sessiontime
属性添加到$fillable
数组:protected $fillable = [ ..., 'sessiontime'];