Php 带滤波器的拉维ORM

Php 带滤波器的拉维ORM,php,laravel,eloquent,Php,Laravel,Eloquent,以下是我在DB中的表格: 帖子:id、组、创建者、正文、隐藏 类似于用户发布关系:id、用户、发布 型号:LikeUserPostRelationship: 用户belongsTo(用户::类,'user') post belongsTo(post::类,'post') 如何使用('post')->get()查询所有LikeUserPostRelationship::Where('user','=',$user->id)-> 并使用$post->hide=true过滤掉LikeUserPostR

以下是我在DB中的表格:

帖子:id、组、创建者、正文、隐藏

类似于用户发布关系:id、用户、发布

型号:LikeUserPostRelationship:

用户belongsTo(用户::类,'user')

post belongsTo(post::类,'post')

如何使用('post')->get()查询所有
LikeUserPostRelationship::Where('user','=',$user->id)->
并使用$post->hide=true过滤掉LikeUserPostRelationship集合


谢谢你的帮助

您可以使用
whereDoesntHave()
作为标准,该标准将过滤掉相关帖子设置为hide=true的结果

$results = LikeUserPostRelationship::with('post')
                        ->where('user','=',$user->id)
                        ->whereDoesntHave('post', function ($query) {
                            $query->where('hide', '=', true);
                        })
                        ->get();

Like user posts看起来应该是多对多关系,不应该有模型,并且应该在user and Post中使用belongTomany。是的,我仍在学习,将探讨多对多关系Like Post的多对多关系如何?请阅读laravel.com/docs。我一直在尝试hasMany关系,从用户模型到LikeUserPostRelationship,我可以做到:$query=User::find(Auth::id())->first();返回$query->like\u post;但我无法返回$query->like_post->post;表示没有名为[post]的集合时出错。我已经在LikeUserPostRelationship模型中定义了post关系。