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 中看到附加的访问器。
只是想知道是否可以 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 中看到附加的访问器。