【问题标题】:Getting filtered data from many to many relationship从多对多关系中获取过滤数据
【发布时间】:2020-10-04 18:34:41
【问题描述】:

我需要从 Post 和 Tag 表中获取多对多关系的过滤数据。

我有帖子模型:

class Post extends Model
{
    public function tag()
    {
        return $this->belongsToMany('App\Tag', 'post_tag','post_id','tag_id');
    }   
}

标签模型如下:

Class Tag extends Model
{
    protected $fillable = ['name'];

    public function post()
    {
        return $this->belongsToMany(Post::class, 'post_tag');
    }  
}

但是当我尝试根据 tag_id 获取过滤数据时:

if($request->filled('tag_id')){
           $posts = Post::whereHas(
               ['tag' => function($query) use($request)
                   {
                       $query->where('tag_id','=', $request->input('tag_id'));
                   }
               ])->get();
       }

没用

【问题讨论】:

    标签: laravel eloquent many-to-many


    【解决方案1】:

    根据laravel doc

    whereHas 将字符串和回调函数作为参数而不是数组:

     $posts = Post::whereHas(
                   'tag' ,function($query) use($request)
                       {
                           $query->where('tag_id','=', $request->input('tag_id'));
                       }
                   )->get();
    

    【讨论】:

    • 你可以在 3 分钟内接受答案 :) 所以 3 分钟后我会去做
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多