【发布时间】:2017-08-18 09:17:39
【问题描述】:
只是想知道是否可以在 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 ]);
我知道这行不通。我只是在寻找一种类似的方法来将我的访问器 full_name 添加到我的收藏中。所以我不需要在我的前端连接。所以我的预期结果是
{
id : 1,
first_name : "Sample fname",
last_name : "Sample lname",
.....
.....
full_name : "Sample fname Sample lname",
}
【问题讨论】:
-
急切加载的逻辑因您的情况而异。它将用于关系,在此示例中使用它没有任何意义。
-
此外,访问器将在您的收藏中可用,您可以使用它。但是如果你想创建另一个集合,你可以循环并手动插入它。
-
问题是,当我在控制器上循环该集合时,我只能获得
full_name。我无法在我的前端(JS)中访问它。我添加了return response()->json([ 'data' => $user_infos ]); -
您有其他选择吗?建议。
-
检查我的答案
标签: php laravel repository-pattern accessor