没有外键的laravel关系
Posted
技术标签:
【中文标题】没有外键的laravel关系【英文标题】:laravel relationship without foreign key 【发布时间】:2019-07-20 02:37:20 【问题描述】:想象在 Laravel 项目中,我有 Traking
Order
和 Driver
Eloquent 模型。
在trakings
表中,我有列tracking_key
。在drivers
表中,我还有tracking_key
列。
例如如果司机tracking_key
是x,那么tracking_key
x在trakings
表中有很多跟踪信息。
所以现在我有$order = new Order::with('driver')
;它工作正常,但现在在这个查询中,我也想从trakings
表中获取信息(跟踪与驱动程序的tracking_key
匹配的trakings
表中的信息)。
如您所见,我不能拥有Driver::with('trakings')
类型的关系,因为我在这两个表中没有外键。
我试过了:
$order = new Order::with(['driver' => function($query)
$query->join('trackings', 'trackings.tracking_key', '=', 'drivers.tracking_key');
])
但结果是 stranje,我认为这不起作用。那我该怎么办?
【问题讨论】:
【参考方案1】:您可以像这样使用嵌套的急切加载:
Order::with('driver.trackings')
这将是与订单相关的加载驱动程序和与驱动程序相关的跟踪
【讨论】:
我不能在驱动程序中建立 tracking() 关系以上是关于没有外键的laravel关系的主要内容,如果未能解决你的问题,请参考以下文章