我有一个控制器,我想对变量执行一些逻辑并将其发送到资源以在api中显示 所以这是我的控制器:
public function index()
{
$data = Accommodation::with('accommodationFacilities')->paginate();
$x = Accommodation::with('cities')->get(1);
return new AccommodationResource($data);
}
这是资源:
现在在资源中,我想在我的Api中显示$x
public function toArray($request)
{
return parent::toArray($request);
}
编辑
如果我想显示$x
数据,然后再显示$data
模型,如下所示:
public function toArray($request)
{
return [
'id' => $this->id,
'X' => $this->x,
];
}
因为现在它给了我以下错误:
未定义的属性:Illuminate \ Pagination \ LengthAwarePaginator :: $ id 当我删除分页时出现此错误:
调用未定义的方法Illuminate \ Database \ Eloquent \ Builder :: all()
当我尝试$x
替换$ data时,我不能再使用这些数据。
答案 0 :(得分:1)
要接受资源的其他数据,请覆盖资源的constructor
。
住宿资源
public $x;
public function __construct($resource, $x)
{
parent::__construct($resource);
$this->x = $x;
}
public function toArray($request)
{
// you can use '$this->x' here.
return [
'id' => $this->resource->id,
'x' => $this->x,
];
}
控制器
return new AccommodationResource($data, $x);