我希望使用Laravel雄辩的关系来建立关系中的关系。
这是我试过的: 这是我的订单模型
public function orderProduct()
{
return $this->hasMany(OrderProduct::class);
}
这是我的OrderProduct模型
public function expiry()
{
return $this->hasOne(ProductExpiryDate::class);
}
我试图从主订单模型中获取到期日期
$deliveryOrder = Order::find($id);
dd($deliveryOrder->orderProduct()->expiry)
它给我一个错误:
Undefined property: Illuminate\Database\Eloquent\Relations\HasMany::$expiry
请帮帮我。感谢。
答案 0 :(得分:1)
您尝试做的是与子关系建立关系。
使用以下内容很容易做到:
App\Order::with('OrderProduct.expiry')->get();
从Laravel文档中,您可以找到有关 Nested Eager Loading 的以下内容:
要急切加载嵌套关系,您可以使用“dot”语法。例如,让我们在一个Eloquent声明中急切地加载本书的所有作者和作者的所有个人联系人:
$ books = App \ Book :: with('author.contacts') - > get();
答案 1 :(得分:0)
您收到此错误,因为这不是我推荐的急切加载
$deliveryOrder = Order::with('OrderProduct.expiry')->find($id);
dd($deliveryOrder->orderProduct->expiry)
当你使用
时也是如此$deliveryOrder->orderProduct() // this refers to relationship so
将其改为此。
$deliveryOrder->orderProduct->expiry
希望这有帮助