Laravel 存储库预加载预定义访问器

Laravel Repository eager load predefined accessor

只是想知道是否可以 eager-load 在 Laravel 存储库中定义访问器。我目前正在使用这个 l5-repository 包和 Laravel 5.4.

在我的UserInfo.php模型中,我有这个功能

public function getFullNameAttribute()
{
    return ucfirst($this->first_name . " ". $this->last_name);
}

然后我尝试像这样在我的控制器中急切加载该访问器。

$user_infos = $this->repository->with('full_name')->all(); 
// or $user_infos = $this->repository->with('getFullNameAttribute')->all();
return response()->json([ 'data' => $user_infos ]);

我知道这是行不通的。我只是在寻找一种类似的方法来在我的 collection 中添加我的访问器 full_name。所以我不需要在我的前端连接。所以我的预期结果是

{
   id : 1,
   first_name : "Sample fname",
   last_name : "Sample lname",
   .....
   .....
   full_name : "Sample fname Sample lname",
}

在您的模型中使用 $appends UserInfo.php

protected $appends = ['full_name'];

这会将此自定义字段附加到您的集合中。

然后你可以在这里看到它:

$user_infos = UserInfo::all(); 
$user_infos->toJson();

您可以在 json 中看到附加的访问器。