PHP Laravel REST api双反向关系
我正在使用Laravel构建一个RESTAPI。我的数据库有一个名为container的表。容器与另一个名为Shop的表有外部关系。最后是一个图像表,它具有指向Shop表的外键。 我想为我的容器创建一个端点,该端点将返回容器数据,包括分配给它的店铺的数据以及分配给店铺的所有图像 这是我的容器资源:PHP Laravel REST api双反向关系,php,laravel,Php,Laravel,我正在使用Laravel构建一个RESTAPI。我的数据库有一个名为container的表。容器与另一个名为Shop的表有外部关系。最后是一个图像表,它具有指向Shop表的外键。 我想为我的容器创建一个端点,该端点将返回容器数据,包括分配给它的店铺的数据以及分配给店铺的所有图像 这是我的容器资源: class Container extends JsonResource { public function toArray($request) { return
class Container extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'shop_id' => $this->shop_id,
'shop' => (new ShopResource($this->whenLoaded('shop')))
];
}
}
这是我的店铺资源:
class Shop extends JsonResource
{
public function toArray($request)
{
return parent::toArray($request);
}
}
这是我的容器控制器:
class ContainerController extends Controller
{
public function index()
{
return ContainerResource::collection(Container::with('shop')->get());
}
}
在Django中,基本上我需要做的就是将相关的名称分配给图像模型(例如related_name=“images”),然后使用例如shop.objects.first()。图像获取数据库中与商店模型相关的所有图像,这些图像将在容器序列化程序中考虑。
如何使用Laravel Rest API实现相同的效果 要加载关系,请执行以下操作
Container::with('shop.images');
就我所知,parent::toArray()
应该包括商店资源
中的图像,如果没有,请填写与容器资源
类似的资源
class Shop extends JsonResource
{
public function toArray($request)
{
return [
...
'images' => ImageResource::collection($this->whenLoaded('images')),
];
}
}
要加载多个关系,使用with方法,还可以获取一个数组
Container::with(['shop.images', 'shop.employees',]);
谢谢你帮了我,不过我想到一件事。如果有另一个表具有外键到商店模型,例如员工,我们希望将他们也包括在容器中,该怎么办。容器::with('shop.images')::with('shop.employees')?