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
  • 集合返回
    title=>$this->pivot->title。“Hello World”
    当它加载pivot时
这是我的方法:

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"
  }
}