通常我可以用来 CustomerAddress::with(["province", "city", "district"]);包含与响应的关系,但我使用模型作为方法参数,如下所示:public function show(CustomerAddress $address){ return $address;}目前,我可以使用以下方式获取关系查询:public function show(CustomerAddress $address){ $address = CustomerAddress::with(["province", "city", "postalcode", "district"])->where("id", $address->id)->firstOrFail(); return $address;}但我认为这会产生双重查询,这对性能不利。我的另一个解决方案是不要在参数中调用模型,如下所示:public function show($address_id){ $address = CustomerAddress::with(["province", "city", "postalcode", "district"])->where("id", $address_id)->firstOrFail(); return $address;}但由于某种原因,我需要CustomerAddress在方法参数中使用模型。是否还有其他解决方案可以包含关系而$address无需再次调用模型类?
2 回答
哈士奇WWW
TA贡献1799条经验 获得超6个赞
您已经加载了模型,因此只需加载关系即可。这称为延迟预加载。
public function show(CustomerAddress $address){ return $address->load("province", "city", "postalcode", "district"); }
希望有帮助:)
呼如林
TA贡献1798条经验 获得超3个赞
显示方法是这样的
public function show(CustomerAddress $address) { return $address::with(["province", "city", "postalcode", "district"])->where("id", $address->id)->firstOrFail(); }
您可以使用 show 方法并传递CustomerAddress
as 参数
show(new CustomerAddress())
- 2 回答
- 0 关注
- 118 浏览
添加回答
举报
0/150
提交
取消