将两个表连接到参考表Laravel

时间:2018-01-10 18:46:03

标签: mysql laravel eloquent

我有三张桌子

#1表时间轴这是我的参考表,其中包含一个自动递增的ID,存储在列 id

#2 timeline_videos

#3 timeline_else

如果视频与帖子一起上传,会在帖子上发生什么     它将进入表#2,其他任何内容都会进入表#3。

#2-3将表时间轴中的自动增量ID存储在列 pid

在查询时间轴时,我需要使用id = pid连接两个表数据      所以我可以在帖子中使用其余的关系数据。    我做了一些研究,似乎无法找到这样做的方法。 到目前为止我的代码

控制器

$groupposts = timeline::where([
    ['owner','=',$owner],['id','<',$lastid],
    ])
    ->join('timeline_videos','timeline.id','=','timeline_videos.pid')
    //->join('timeline_else','timeline.id','=','timeline_else.pid')
    ->orderBy('id','desc')
    ->limit(5)
    ->get();

第二次加入注释时没有错误,但我还需要抓取 timeline_else 数据。

更新 -

我现在决定使用Eloquent Relationships加入表格,   我现在的问题是我之间有什么样的关系   表?  我意识到它基本上需要能够在两个表之间切换   根据 timeline_videos timeline_else 不会是“加入”但按类型分隔的事实来获取数据。  这些表需要根据我现在命名为 type 的列加入表#1 时间轴,以便使用 id = pid说明查找和匹配/加入的位置

2 个答案:

答案 0 :(得分:0)

您可以使用关系。

听起来时间轴有很多视频,并且有很多视频失败 https://laravel.com/docs/5.5/eloquent-relationships#one-to-many

您将拥有每个表的模型并设置关系

时间轴模型:

public function videos()
{
    return $this-> hasMany('App\Videos');
}
public function videoFailures()
{
    return $this-> hasMany('App\videoFailures');
}

视频模型:

public function timeline()
{
    return $this->belongsTo('App\Timelines');
}

视频失败模型:

public function timeline()
{
    return $this->belongsTo('App\Timelines');
}

然后你可以去:

 $timeLine = Timmeline::find($id);

查找您将要执行的时间线的视频:

$videos = $timeLine->videos();

找到其他人:

$videoElse = $timeLine-> videoFailures();

答案 1 :(得分:0)

使用派克戴尔提供的一些内容以及更多试验和错误

我的模特看起来像

<强>时间轴

usr/bin/python2.7

timeline_ect.php,我更改了表格的名称

 class timeline extends Model
{
  protected $table ='timeline';
  public $timestamps = false;

  public function videos()
  {
      return $this->hasMany('App\timeline_videos','pid','id');
  }
  public function else()
  {
      return $this->hasMany('App\timeline_ect','pid','id');
  }

}

<强> timeline_videos

class timeline_ect extends Model
{
    protected $table='timeline_ect';
    public $timestamps = false;
    public function timeline()
      {
          return $this->belongsTo('App\Models\timeline','pid','id');
      }
}

然后是我的控制器

  class timeline_videos extends Model
{
    protected $table='timeline_videos';
    public $timestamps = false;
 public function timeline()
   {
       return $this->belongsTo('App\timeline','id','pid');
   }
}

到目前为止,没有问题查询是正确的。