Laravel 资源:使用whenPivotLoaded作为条件
我想要这个:Laravel 资源:使用whenPivotLoaded作为条件,laravel,eloquent,laravel-collection,laravel-eloquent-resource,Laravel,Eloquent,Laravel Collection,Laravel Eloquent Resource,我想要这个: 当集合在没有枢轴的情况下加载时,它返回'title'=>$this->title 集合返回title=>$this->pivot->title。“Hello World”当它加载pivot时 这是我的方法: namespace-App\Http\Resources; 使用App\Item; 使用\Http\Resources\Json\JsonResource; 类ItemResource扩展了JsonResource { /** *将资源转换为数组。 * *@param\li
- 当集合在没有枢轴的情况下加载时,它返回
'title'=>$this->title
- 集合返回
当它加载pivot时title=>$this->pivot->title。“Hello World”
namespace-App\Http\Resources;
使用App\Item;
使用\Http\Resources\Json\JsonResource;
类ItemResource扩展了JsonResource
{
/**
*将资源转换为数组。
*
*@param\light\Http\Request$Request
*
*@return数组
*/
公共功能待命($request)
{
返回[
'id'=>this->id,
'title'=>$this->whenpivotload('item\u groups\u attribute',
函数(){
返回$this->pivot->title.“Hello”;
}),//但是如果没有使用pivot,如何添加$this->title?
];
}
}
如果我尝试这样的方法:
'title' => $this->whenPivotLoaded('item_groups_attribute',
function () {
return $this->pivot->title . "Hello";
}) ?: $this->title,
这不起作用,因为结果是
无轴(标题不显示在字段中):
这是使用pivot加载的响应:
{
"data": {
"id": 5,
"title": "Test"
}
}
由于pivot要么已加载,要么未加载,只需对另一个字段的整个表达式求反,它就永远不会被复制
公共功能待命($request)
{
返回[
'id'=>this->id,
'title'=>$this->whenpivotload('item\u groups\u attribute',
函数(){
返回$this->pivot->title.“Hello”;
}),
'title'=>!$this->加载时('item\u groups\u attribute',
函数(){
返回$this->title;
}),
];
}
这应该可以。但是this->whenpivotload
返回\illumb\Http\Resources\MissingValue
如果没有枢轴,那么我必须使用instanceof
{
"data": {
"id": 5,
"title": "Test"
}
}