当我在控制器中执行此操作时
$data = User::with('teams')->find(2);
return response(['data' => $data]);
Run Code Online (Sandbox Code Playgroud)
我得到这个结果
{
"id": 2,
"country_id": 1,
"first_name": "John",
"last_name": "Doe",
"created_at": "-0001-11-30 00:00:00",
"updated_at": "2015-02-02 23:08:21",
"full_name": "John Doe",
"teams": [
{
"id": 1,
"name": "Helpdesk medewerker",
"description": ""
},
{
"id": 2,
"name": "Retentie",
"description": ""
}
]
}
Run Code Online (Sandbox Code Playgroud)
我对完整teams数据不感兴趣,只对teamNames用户的数据感兴趣。
我通过添加这个来做到这一点
$data->each(function($user) {
$user->team_names = $user->teams->lists('name');
unset($user->teams);
});
Run Code Online (Sandbox Code Playgroud)
我想知道这是否是修改雄辩结果的正确方法。
您可以为此使用属性访问器。将其添加到您的模型中:
protected $hidden = ['teams']; // hide teams relation in JSON output
protected $appends = ['team_names']; // add custom attribute to JSON output
public function getTeamNamesAttribute(){
return $this->teams->lists('name');
}
Run Code Online (Sandbox Code Playgroud)
要动态更改hidden,appends您可以使用 setter 方法:
$data = User::with('teams')->find(2);
$data->setHidden(['teams']);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8900 次 |
| 最近记录: |