在laravel中使用雄辩来加入第三个表。最好的方法来完成?

时间:2016-12-26 18:57:38

标签: laravel eloquent laravel-5.3

我正在尝试加入指定曲目的所有视频,同时加入来自车辆表的品牌和型号。每个视频仅包含来自车辆表的一辆车。我在使用Eloquent语法时遇到困难,无法实现这一点。

我为抓取所有视频而构建的Track模型非常直接,并且运行良好,如下所示:

<?php

namespace App;
use Illuminate\Database\Eloquent\Model;

class Track extends Model
{

    public function video()
    {
        return $this->hasMany('App\Video');
    }

}

我用车辆模型编写如下:

<?php

namespace App;
use Illuminate\Database\Eloquent\Model;

class Video extends Model
{
    function vehicle()
    {
        return $this->hasOne('App\Vehicle');
    }
}

三个数据库模型如下所示

:跟踪

  • id
  • 名称
  • 城市
  • 状态
  • url_key

视频

  • id
  • youtube_id
  • 日期
  • best_lap_time
  • vehicles_id

车辆

  • ID
  • 使
  • 模型

1 个答案:

答案 0 :(得分:2)

以下答案假设您的视频()关系效果很好(正如您所说)。但是看看你的数据库模式和模型,你的视频表中没有名为track_id的列,所以我不确定。

您的车辆关系应如下所示(您定义相反):

function vehicle()
{
    return $this->belongsTo('App\Vehicle', 'vehicles_id');
}

然后你的查询应该是这样的:

$result = \App\Track::with('video.vehicle')->get()