php - Laravel 获取模型属性 : difference between two methods

标签 php laravel model attributes eloquent

我发现有两种方法可以使用 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 MethodsPHP 手册上。

在某些情况下,您可能需要使用动态的不存在属性,例如,如果您有first_namelast_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/

相关文章:

PHP Web 应用程序 : mysql database design best practices question

php - 在 select for MYSQL 中选择

javascript - 从 ajax 调用返回 html 并格式化它

model - 如何保存序列分类模型分词器和配置的微调 bert?

php - Codeigniter:foreach 方法或结果数组?? [模型+ View ]

php - 更新/保存帖子元 - PHP - Wordpress

php - 显示产品类别

phpunit - 用 find() 模拟 Eloquent 模型

php - 在 Laravel 5.5 中测试授权策略时遇到问题

php - 在 MVC 结构中工作时,DAO 与 Model 相同吗?