Php 如何在控制器laravel中添加自定义属性

Php 如何在控制器laravel中添加自定义属性,php,laravel,Php,Laravel,我正在使用laravel,我想在控制器中添加动态自定义属性 我知道有一种方法是这样的 public function getFullNameAttribute() { return $this->first_name.' '.$this->last_name; } 现在,您可以通过以下方式获取全名: $user = User::find(1); $user->full_name; 但这是一种

我正在使用laravel,我想在控制器中添加动态自定义属性

我知道有一种方法是这样的

      public function getFullNameAttribute()
        {
            return $this->first_name.' '.$this->last_name;
        }
现在,您可以通过以下方式获取全名:

    $user = User::find(1);
    $user->full_name;
但这是一种模式 我想在控制器中声明自定义att
可能吗?

为什么不在模型中?雄辩有一个伟大的功能称为“访问者”。该功能允许您向模型或表中不存在的模型添加自定义字段

function getFullNameAttribute() {
    return sprintf('%s %s', $this->first_name, $this->last_name);
}
现在您可以访问模型上的全名属性,与您提到的相同:

$user = User::find(1);
$user->full_name;

为什么要在控制器中执行此操作?它在模型中更有意义,这种“神奇方法”仅在Model@ChristopheHubert,因为我希望为每个记录传递动态att(例如相关项)我在controllerI中找到了相关的项目,我建议将其保留在模型中,然后使用接受参数的自定义访问器:
getFullNameWithExtra($extra){…}
为什么控制器需要“属性”?我不确定您在这里是否清楚说明了用例。正如您提到的,这可以在模型中完成。你能举一个你正在努力实现的例子吗?