为了账号安全,请及时绑定邮箱和手机立即绑定

如何在控制器方法中使用与模型参数的关系?

如何在控制器方法中使用与模型参数的关系?

PHP
动漫人物 2023-07-21 18:20:14
通常我可以用来 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");
}

希望有帮助:)



查看完整回答
反对 回复 2023-07-21
?
呼如林

TA贡献1798条经验 获得超3个赞

显示方法是这样的

public function show(CustomerAddress $address) { 
return $address::with(["province", "city", "postalcode", "district"])->where("id", $address->id)->firstOrFail();
}

您可以使用 show 方法并传递CustomerAddressas 参数

show(new CustomerAddress())


查看完整回答
反对 回复 2023-07-21
  • 2 回答
  • 0 关注
  • 82 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信