Laravel Eloquent 模型的临时属性

25

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

当我添加此属性并执行 $user->save() 时,会出现错误,提示我没有名为“secure”的数据库列。我可以在保存之前取消设置“secure”,但是感觉应该有更好的方法。有什么建议吗?


建议队列已满,但我想突出显示 $user->secure$user->save() - Valerio Bozz
3个回答

40

只需向您的类添加属性即可。

class User extends Eloquent {
  public $secure;

  // ...
}

请注意,最好将其声明为protected,并向您的模型添加相应的访问器和修改器(getSecuresetSecure方法)。


1
为什么要将其设置为protected而不是private - Alexander Malakhov
1
据我所知,有些人喜欢使用protected,因为它允许扩展类访问属性。只有当他们确定永远不希望子类访问时,才会使用private。如果通常避免继承,那么这种方式尤其方便。就个人而言,我倾向于使用最小的范围,并在发现实际需要时将其打开到protected。虽然这主要是习惯问题,而不是强烈的意见。当我想建立明确的契约时,我会花时间选择更合适的可见性。这也包括使用final关键字。 - musicin3d

16

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接