【问题标题】:Laravel belongs to relation with where conditionLaravel 属于 where 条件的关系
【发布时间】:2021-08-24 23:54:01
【问题描述】:

我使用 2 个表说“video”,“video_tags”。我的视频表将存储视频记录,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')"));

它不工作,条件不适用于 belongsToMany ?还是其他方式?

【问题讨论】:

  • 这个我用 where 条件 "=" 和 "" 试过了,好像没用
  • 我的意思是Video::whereHas('Videotags', function ($query) { $query-&gt;where('id', 5); })...
  • 它的工作方式如下 $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')"));非常感谢

标签: laravel eloquent laravel-query-builder


【解决方案1】:

终于找到答案了

   $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')")); 

【讨论】:

    猜你喜欢
    • 2014-07-21
    • 1970-01-01
    • 2013-01-15
    • 2021-01-17
    • 2015-02-07
    • 1970-01-01
    • 2020-04-20
    • 2021-10-19
    • 2021-10-09
    相关资源
    最近更新 更多