【问题标题】:laravel relationship without foreign key没有外键的laravel关系
【发布时间】:2019-07-20 02:37:20
【问题描述】:

想象在 Laravel 项目中,我有 Traking OrderDriver Eloquent 模型。

trakings 表中,我有列tracking_key。在drivers 表中,我还有tracking_key 列。

例如如果司机tracking_key是x,那么tracking_keyx在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,我认为这不起作用。那我该怎么办?

【问题讨论】:

    标签: php laravel eloquent foreign-keys relationship


    【解决方案1】:

    您可以像这样使用嵌套的急切加载:

    Order::with('driver.trackings')
    

    这将是与订单相关的加载驱动程序和与驱动程序相关的跟踪

    【讨论】:

    • 我不能在驱动程序中建立 tracking() 关系
    猜你喜欢
    • 2017-09-20
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    • 2017-08-16
    相关资源
    最近更新 更多