使用 laravel 中的 eloquent 加入第三个 table。最好的实现方式?
Using eloquent in laravel to join third table. Best way to accomplish?
我正在尝试加入给定赛道的所有视频以及加入车辆的品牌和型号 table。每个视频只包含车辆 table 中的一辆车。我在使用 Eloquent 语法时遇到困难,无法实现这一点。
我为抓取所有视频而构建的 Track 模型非常简单,并且运行良好,如下所示:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Track extends Model
{
public function video()
{
return $this->hasMany('App\Video');
}
}
我用 Vehicles 模型写的如下:
<?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
- 制作
- 型号
以下答案假定您的 video() 关系运行良好(如您所说)。但是查看您的数据库架构和模型,您的视频 table 中没有名为 track_id 的列,所以我不确定。
你的车辆关系应该是这样的(你定义了相反的):
function vehicle()
{
return $this->belongsTo('App\Vehicle', 'vehicles_id');
}
那么您的查询应该如下所示:
$result = \App\Track::with('video.vehicle')->get()
我正在尝试加入给定赛道的所有视频以及加入车辆的品牌和型号 table。每个视频只包含车辆 table 中的一辆车。我在使用 Eloquent 语法时遇到困难,无法实现这一点。
我为抓取所有视频而构建的 Track 模型非常简单,并且运行良好,如下所示:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Track extends Model
{
public function video()
{
return $this->hasMany('App\Video');
}
}
我用 Vehicles 模型写的如下:
<?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
- 制作
- 型号
以下答案假定您的 video() 关系运行良好(如您所说)。但是查看您的数据库架构和模型,您的视频 table 中没有名为 track_id 的列,所以我不确定。
你的车辆关系应该是这样的(你定义了相反的):
function vehicle()
{
return $this->belongsTo('App\Vehicle', 'vehicles_id');
}
那么您的查询应该如下所示:
$result = \App\Track::with('video.vehicle')->get()