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

如何在Laravel中使用多表查询而不使用雄辩的关系

庾鸿飞
2023-03-14

我使用Laravel为我的应用程序创建API,稍后它将与反应前端集成。我有两张桌子,波斯特

  • 邮政桌

帖子id(主键)帖子标题帖子描述

  • 注释表

注释id(主键)注释文字贴子id(外键)

我需要从帖子表中获取帖子id、帖子标题以及评论表中每个帖子的评论总数

        {
            "post_id": 1,
            "post_title": "some title",
            "total comments": "4"

        },

我知道如何为这些数据编写sql查询,但在显示上述数据时遇到了问题。下面是我正在使用的代码。

$allPostQuery= DB::select('select * from post');

foreach($allPostQuery as $allPostQuery)

{

$postId= $allPostQuery->post_id;

$totalCommentsQuery= DB::select('select count(comment_id) as totalComments from comment where post_id=:postId',["postId" => $postId ]);

}

return \Response::json([$allPostQuery,$totalCommentsQuery]);

但这不起作用。我对帖子ID的循环感到困惑,因为它可以获取每篇帖子的总评论。我必须在前端使用react-foreach循环执行此操作吗?任何人都可以提出任何帮助。谢谢

共有1个答案

商飞龙
2023-03-14

根据您的问题,您只需要每个帖子的帖子ID、标题和评论数量:

    $query = DB::select('
        SELECT 
            p.post_id, 
            p.title, 
            c.total AS totla_comments
        FROM posts p
        INNER JOIN 
        (
            SELECT post_id, COUNT(post_id) AS total FROM comments WHERE comments.post_id = post_id
            GROUP BY post_id

        ) c
        ON p.post_id = c.post_id
    ');

    echo json_encode($query);

使用json\u编码(Laravel有-

看看你的方法:

  1. 首先你查询帖子
  2. 你再次循环帖子并查询评论

这将影响您的性能速度,应该避免。

 类似资料:
  • 我正在尝试使用Laravel雄辩的模型查询多个表,这些模型具有一对一、一对多和多对多的关系。 我有一个表,一个表,一个表和一个透视表。 每个表单有一个品牌和一个用户: 品牌没有任何外键: 用户没有任何外键: 有一个数据透视表可以创建多对多的关系,用于创建拥有许多用户(如品牌成员)的品牌组: 我试图通过直接所有权()或品牌成员身份获取属于用户的所有表单,通过多对多透视表获取用户所属的所有品牌的所有表

  • 假设我们正在使用Laravel的查询生成器: 我正在寻找一个等效的SQL: 当我必须键入大量select和WHERE(或者通常在select的列alias中包含别名,并且它在结果数组中使用)时,这将特别有用。如果没有任何表别名,我需要输入更多的内容,所有内容的可读性都会降低。在laravel文档中找不到答案,有什么想法吗?

  • 在我的应用程序中,我更新了从一对多到多对多的关系,我试图找出一种持久化关联功能的方法。 假设我有两个相关的表,例如狗和主人。如果我有一系列的主人,并且我正试图为这些主人获取一份狗的id列表,我应该如何雄辩地做到这一点? 这里也提出了类似的问题:https://laracasts.com/discuss/channels/laravel/getting-many-to-many-related-da

  • 我正在使用Laravel5.1进行CMS开发。我有一个简单的帖子结构,用户和用户都可以喜欢帖子。 帖子和用户有多对多关系,并使用数据透视表来表示关系。 职位模型有 用户模型有 我想列出用户的最新活动。例如。 Username1喜欢Post2 Username5喜欢Post9 用户名30喜欢Post25 我知道我必须像这样编写sql查询- 上面的查询工作正常,但有没有办法使用laravel雄辩?

  • 我有三个模型用户,电子邮件和电话和数据库表用户,电子邮件和电话与下列列提到。 现在,我在用户模型中使用以下函数,使用雄辩的ORM一对多关系建立用户与电子邮件和电话的关系 我想知道有必要使用hasMany()方法两次,或者有其他更好的方法吗?

  • 我使用laravel雄辩到CRUD数据。我的问题是,我不知道如何使用laravel雄辩的ORM进行UNION查询。你能帮我解决我的问题吗 这是我想要在laravel雄辩或查询生成器中实现的示例查询