Laravel Eloquent模型的临时财产

时间:2014-03-10 10:10:49

标签: php laravel eloquent

我有一个Laravel Eloquent模型用户,它有一个包含用户名和电子邮件列的表。我需要在运行时为模型添加属性,例如$ user-> secure。此属性不需要转到数据库。

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

3 个答案:

答案 0 :(得分:29)

只需在您的班级中添加一个属性。

class User extends Eloquent {
  public $secure;

  // ...
}

请注意,最好将其声明为protected并将相应的访问器和变更器(getSecuresetSecure方法)添加到模型中。

答案 1 :(得分:9)

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

class User extends Eloquent {
    public $secure = null;

    // ...
}

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

答案 2 :(得分:2)

如果您打算使用该附加属性,$append会让您大吃一惊。

http://laraveldaily.com/why-use-appends-with-accessors-in-eloquent/