Laravel Eloquent模型的临时属性

2022-08-30 17:33:20

我有一个Laravel Eloquent模型User,它有一个带有用户名和电子邮件列的表格。我需要在运行时为模型添加一个属性,类似于$user>安全。此属性不需要转到数据库。

当我添加此属性并点击$user->save()时,我收到一个错误,说我没有数据库列“安全”。我可以在保存之前取消设置“安全”,但不知何故,我觉得应该有更好的方法来做到这一点。有什么建议吗?


答案 1

只需向类中添加一个属性即可。

class User extends Eloquent {
  public $secure;

  // ...
}

请注意,最好将其声明为受保护,并向模型添加相应的访问器和赋值器(和方法)。getSecuresetSecure


答案 2

对于那些仍然找到这篇文章的人(就像我一样),你可能需要显式声明属性,以防止它被自动添加到数组中,从而被添加到 INSERT/UPDATE 查询中:nullattributes

class User extends Eloquent {
    public $secure = null;

    // ...
}

资料来源:http://laravel.io/forum/02-10-2014-setting-transient-properties-on-eloquent-models-without-saving-to-database


推荐