我有一个多年以来已迁移到不同服务器的旧项目。因此,我无法在该项目上运行任何 artisan 命令。
我想向现有模型用户添加一列“sessiontime”。我在数据库表中添加了列 - 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;
}
在我的一个 Controller 中,我正在这样做:
$user = User::select('id')->where('email', 'a.b@c.com')->first();
$user->sessiontime = "RANDOMString";
$user->save();
但该列未被填充。
是否可以在不运行 artisan migrate 的情况下向现有表添加列? 谢谢
最佳答案
这可能是由于 Laravel 对 mass assignment 的默认保护.对于任何 Eloquent 模型,您可以选择定义其中之一(但不能同时定义两者)$guarded
或 $fillable
阵列。 $guarded
数组用作不可可批量分配的属性黑名单,而 $fillable
属性作为可批量分配的属性的白名单。
要解决您的问题,您可能只需要将 sessiontime
属性添加到您的 $fillable
数组:
protected $fillable = [ ..., 'sessiontime'];
关于php - 在不迁移的情况下向 Eloquent 模型添加一列 -PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58226103/