我已阅读过如何temporarily hide model attributes。 我想暂时隐藏一个模型关系属性。
例如
{
"slug": "google-chrome",
"name": "Google Chrome",
"description": {
"text": null,
"created_at": "2016-12-05 12:16:38",
"updated_at": "2016-12-05 12:16:38"
}
仅在此查询中隐藏description.created_at的语法是什么? 在我的SoftwareController中我有
public function show(Request $request, $slug)
{
$models = Software::query();
$model =
$models
->where('slug', $slug)
->firstOrFail()
->makeHidden([
'description.created_at',
]);
return $model;
}
这种语法似乎不起作用?有可能吗?
答案 0 :(得分:3)
makeHidden()
不支持点表示法。
您应该在相关型号上调用makeHidden:
$model = $models
->where('slug', $slug)
->firstOrFail();
$model->description->makeHidden('created_at');
请注意,这仅在您有一个结果时才有效。如果你想在Collection上执行此操作,则必须迭代itens并为每个项目运行makeHidden。