Laravel属于where条件的关系
Laravel belongs to relation with where condition
我正在使用 2 tables 说“视频”,“video_tags”。我的视频 table 将存储视频记录,而 video_tags 将存储标签现在我真的需要前端,我只需要获取带有特定标签的视频集。为此,我将条件设置如下:
$resultQuery = Video::with('Videotags')
->where('event_date', $this->event_date)
->orderBy(DB::raw("STR_TO_DATE(`videos`.`from_time`,'%h:%i%p')"));
我的视频模型看起来像
public function Videotags()
{
return $this->belongsToMany(Tag::class, 'video_tag', StringLiterals::VIDEOID, 'tag_id')
->whereNull('video_tag.deleted_at');
}
现在我需要过滤视频标签为5的视频记录,
我在模型文件中放置了 where 条件
->where('tag_id', '5')
另外,我试过了
$resultQuery = Video
::with('Videotags', function (Builder $query) {
$query->where('tag_id', '<>', '5');
})
->where('event_date', $this->event_date)
->orderBy(DB::raw("STR_TO_DATE(`videos`.`from_time`,'%h:%i%p')"));
它不工作,where condition 对 belongsToMany 不工作?或者其他方式?
终于找到答案了
$resultQuery = Video::whereHas('tags', function ($query) {
$query->where('video_tag.tag_id', 83);
})->where('event_date', $this->event_date)
->orderBy(DB::raw("STR_TO_DATE(videos.from_time,'%h:%i%p')"));
我正在使用 2 tables 说“视频”,“video_tags”。我的视频 table 将存储视频记录,而 video_tags 将存储标签现在我真的需要前端,我只需要获取带有特定标签的视频集。为此,我将条件设置如下:
$resultQuery = Video::with('Videotags')
->where('event_date', $this->event_date)
->orderBy(DB::raw("STR_TO_DATE(`videos`.`from_time`,'%h:%i%p')"));
我的视频模型看起来像
public function Videotags()
{
return $this->belongsToMany(Tag::class, 'video_tag', StringLiterals::VIDEOID, 'tag_id')
->whereNull('video_tag.deleted_at');
}
现在我需要过滤视频标签为5的视频记录, 我在模型文件中放置了 where 条件
->where('tag_id', '5')
另外,我试过了
$resultQuery = Video
::with('Videotags', function (Builder $query) {
$query->where('tag_id', '<>', '5');
})
->where('event_date', $this->event_date)
->orderBy(DB::raw("STR_TO_DATE(`videos`.`from_time`,'%h:%i%p')"));
它不工作,where condition 对 belongsToMany 不工作?或者其他方式?
终于找到答案了
$resultQuery = Video::whereHas('tags', function ($query) {
$query->where('video_tag.tag_id', 83);
})->where('event_date', $this->event_date)
->orderBy(DB::raw("STR_TO_DATE(videos.from_time,'%h:%i%p')"));