当前位置: 首页 > 知识库问答 >
问题:

雄辩:hasNo与参数

公冶泰
2023-03-14

我有以下雄辩的模型

用户id

邮政编码

评论| id |发布| id |用户| id

使用eloquent,如何获取特定用户尚未发表评论的所有帖子?

到目前为止,我试过:

在模范岗位:

public function noCommentOf(User $user) {
    $this->hasNot('App\Comment')->commentOf($user);
}

在模型注释中:

public function commentOf($query, User $user) {
    return $query->where('user_id', '=', $user->id);
}

共有3个答案

高茂
2023-03-14

我想:

$user->post()->leftJoin('comments', 'posts.id', '=', 'comments.post_id')->whereNull('comments.id');
巫马修为
2023-03-14

后模型

public function comments()
{
    return $this->hasMany(Comment::class)
}

然后得到帖子

$posts = Post:: whereDoesntHave('comments', function ($query) use ($userId) {
    $query->where('user_id', $userId);
});

获得没有评论的帖子

$posts = Post::has('comments', '=', 0)->get();
汪才英
2023-03-14

我的方法是通过查询带有whereDoesnthave关系的Post模型。在控制器中:

public function getPostsWithoutCommenter(){
  $userId = 1; // Could be `$user`, `use($user)` and `$user->id`.
  $posts = \App\Post::whereDoesntHave("comments", function($subQuery) use($userId){
    $subQuery->where("user_id", "=", $userId);
  })->get();
}

这将假设注释Post模型上定义为:

public function comments(){
  return $this->hasMany(Comment::class);
}

基本上,如果注释与检查$userId的关系返回一个Collection,则将从结果集中忽略它。

 类似资料:
  • 我试着补充: 并用调用,但响应为空。

  • 嘿,伙计们,我是拉威尔的新朋友。我有这张桌子 我如何能够获取每个科目的is_correct列计数? 谢谢伙计们!

  • 我使用的是Laravel7.0和MySQL 5.7。 我使用Eloquent从数据库中获取记录,当数据库包含大量数据时,响应时间变得非常慢。 以下是几个例子:

  • 问题内容: 我想返回所有类别的所有项目。 此查询我现在返回的类别为1或2或3的项目。我需要返回的类别为1和2以及3的项目。 我怎样才能做到这一点? 问题答案: 试试这个: 使用查询将仅返回具有所有列出类别的项目。

  • 我有一个表事务与复合主键id,Nom,日期和一个表Cour与Nom作为主键和一个事务有关一个Cour。 我怎样才能得到一个有口才关系的特定交易的课程?

  • 我有一个搜索功能在我的应用程序,将搜索一个“广泛的”搜索词的几个列或一个定义的列作为用户选择。我还有一个outser语句,用于搜索公司id(多租户应用程序)和分配的subcompany_id,它们都属于用户。 当我搜索时,我得到了所有的结果,它没有使用与用户相关的company_id或subcompany_id。我发现它在语句括号内使用subcompany_id,而不是在括号外。 此代码返回以下查