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

Laravel雄辩关系问题

卢宜然
2023-03-14

我有三种模式——博客、帖子、评论。博客有很多帖子,帖子有很多评论

当我写作时

return Blog::with('posts','posts.comments')->get();

它会给所有的博客发帖子和评论。但我将如何获得那些由管理员用户创建的博客,即评论表中的用户id。在哪里写入-

return Blog::with('posts','posts.comments')->where('comments.user_id','=','23')->get();

给出错误。

SQLSTATE[42P01]: Undefined table: 7 ERROR: missing FROM-clause entry for table "comments"
LINE 1: select * from "blogs" where "comments"."is_...
^ (SQL: select * from "blogs" where "comments"."user_id" = 23)

如何解决这个问题。


共有2个答案

邢冷勋
2023-03-14

你可以试试这个:

return Blog::with([ 'posts', 'posts.comments' => function($query)
{
    $query->where('comments.user_id', '23');
}])->get();
诸葛茂勋
2023-03-14

如果我理解正确,你想得到所有的帖子,已经由特定的用户评论。

从您迄今为止所做的工作来看,whereHas()可能是您正在寻找的。这就是你能做到的。

return Blog::with('posts.comments')
                ->whereHas('posts.comments', function($q) use ($user){
                  $q->where('comments.user_id', $user->id);
              })->get();

资料来源:http://laravel.com/docs/5.0/eloquent#querying-关系

 类似资料:
  • 我是Laravel5.2的新手,正在开发一个遗留系统,对雄辩有点困惑,希望有人能给我代码。 共有3个表格: 卡片类别卡片2类 卡片可以是许多类别的一部分,这些类别保存在cards2cat表中。 cards2cat表的结构如下 id(主键)图像(卡)类别 我想做的是在Cards模型中有一个方法,名为getCardsWithCategors,它返回Cards信息和category表中类别的名称。 ca

  • 我有以下三个表格: 所以基本上这种关系就像: 用户有许多项目 项目属性到客户端 我的问题是: 如何使用eloquent获得用户的所有客户端? 似乎我不能用户hasManyPass方法,因为在客户端表中没有project_id。 因此,我希望达到的目标是:

  • 我正在编写php代码,对于当前的项目,我正在使用laravel框架(带有雄辩的ORM)。在这个项目中,我创建了两个表:用户和任务。我想在这些表之间创建一个“一对多”的关系。因此,一个用户可以有许多任务。在Tasks类中,我创建了方法所有者(): 但是当我以前得到用户名的时候 我得到这个异常:未定义的属性:illumb\Database\Eloquent\Relations\BelongsTo::$

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

  • 我正在使用Laravel 5创建一个博客,但我对多对多(通过透视表)关系有一个奇怪的问题。我的DB设置如下: 文章表: id|bigint|20|PK|不为空|自动增量 title|varchar|255|不为空 body|text|不为空 category_id|bigint|20|不为空 created_at|时间戳|不空 updated_at|时间戳|非空 已发布|布尔值|非空 delete

  • 我刚刚开始学习LaravelV3,我试图通过创建一个博客来了解eloquent的一对多关系。我的帖子与类别有多对一的关系(每个帖子都链接到一个类别)。 我有以下表格和以下字段: 帖子:id、标题、正文、创建日期、类别id 类别:id、名称 我有以下两种型号: 我想出了如何通过传递类别id来获得所有帖子: 我只是需要帮助,找出如何获得所有的职位,并得到他们的更正类别。因此,在视图中的一天结束时,我可