我发现有两种方法可以使用 Laravel 获取/显示模型的属性。我可以在 User.php
中创建一个函数,例如:
public function getUsername() {
return $this->username;
}
然后像这样显示用户名:
{{{ Auth::user()->getUsername() }}}
或者我可以简单地执行此操作而无需创建函数:
{{{ Auth::user()->username }}}
这两种方法有什么区别?
最佳答案
在这种情况下使用 $someObject->username
时,__get()
魔法方法从 attributes
数组返回属性,因为 username
属性不是对象的公共(public)属性,但它存储(填充后)在 attributes
数组中,当您调用 getUserName()
时自定义方法,该方法返回属性并间接发生相同的事情。因此,您不需要为此使用方法。
在这两种情况下,都会触发 __get()
魔术方法以从属性数组中返回项目。查看Magic Methods在 PHP
手册上。
在某些情况下,您可能需要使用动态的不存在
属性,例如,如果您有first_name
和last_name
field/property 并且您想将这两个名称一起用作 full_name
属性,那么在这种情况下,Laravel
提供了一种很好的方法来获取它。您需要做的就是创建一个方法,例如:
public function getFullNameAttribute()
{
return $this->first_name . ' ' . $this->last_name;
}
那么,您可以使用 {{ $user->full_name }}
来获取该连接值。
关于php - Laravel 获取模型属性 : difference between two methods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26047536/