我有三张桌子
#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说明查找和匹配/加入的位置
答案 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');
}
}
到目前为止,没有问题查询是正确的。