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

Symfony2条令查询,结果为左连接和对象

鲜于阳成
2023-03-14

我对教义不熟悉,现在我想做以下事情。

表“用户朋友”:

id | user_id | friend_user_id

此表包含联系人列表的条目。

现在我想得到一个条目的结果,比如:

SELECT * FROM user_friend a 
    LEFT JOIN user_friend b
    ON (b.user_id = 10 AND b.friend_user_id = a.user_id)
WHERE b IS NULL

此查询将用于从联系人列表中获取未经对方朋友确认的条目(其中b为空,他尚未将“我”添加到联系人列表中)。我希望你明白我在找什么。

我不确定b为NULL的位置是否正确,或者如果已经有另一个条目(表中已确认的朋友),如何检查一个查询,正确的方法是什么?我的想法类似于左连接,你可以在上面看到。

第二,我不知道如何用Symfony2中的教义来做这件事。现在我知道EntityManager和-

我试过$em-

这方面的一个小示例代码将非常好!

谢谢。晚上好。

共有1个答案

皮景龙
2023-03-14

在SQL中,您必须在WHERE语句中定义列的名称,因此不是b为NULL而是b.user\u id为NULL

SELECT * FROM user_friend a 
    LEFT JOIN user_friend b
    ON (b.user_id = 10 AND b.friend_user_id = a.user_id)
WHERE b.user_id IS NULL

使用编写相同查询的另一种方法不存在

SELECT * FROM user_friend a 
WHERE NOT EXISTS (
    SELECT * FROM user_friend b
    WHERE b.user_id = 10
    AND b.friend_user_id = a.user_id
)

DQL中使用的相同查询不存在

$qb->select("a") 
   ->from("MyBundle\Entity\UserFriend a")
   ->where('NOT EXISTS (
        SELECT b
        FROM MyBundle\Entity\UserFriend b 
        WHERE b.user_id = :user_id
        AND b.friend_user_id = a.user_id   
   )')
   ->setParameter('user_id', 10);

在DQL中,确保使用实体字段名,该字段名不一定与数据库列名相同(即,用户id可能存储在名为“user_id”的列中,但实体的字段名可能只是“id”或“userId”)

 类似资料:
  • 带hibernate的JSF应用程序 有没有一种方法可以使用联接来过滤条件列表返回的结果<我有两张桌子。订单和顾客。 我需要返回丢失电子邮件地址的客户的所有订单,以及所有order.billingCustomeId=null和CustomeId=nullorder.shipping订单。 客户可以在或上进行匹配。 我将使用的SQL Hibernate标准 这将返回billing/shipping

  • 我正在使用Ingres 11.0 DB,不确定它是否在其他数据库引擎上具有相同的行为,但这里是它 它不会返回表1中的所有记录,但我使用的是左连接,它应该从T1返回aa记录,从t2只处理行,只返回1条记录 如果我将其中一个条件从where子句移动到join条件,它的开始将返回我所期望的结果 问题是为什么它不工作在哪里所有搜索条件在哪里子句,但工作时,我移动t2.id_number从哪里加入条件? 我

  • 我很难让mySQL返回我想要的结果,因此希望有人能给我一些关于我错在哪里的指示。我有3个表(Sales\u Area、Orders、Rooflight\u Request),Orders包含一个Sales\u Area\u ID列以连接Sales\u Area,因此Sales\u Area可以有多个订单。Rooflight\u请求包含Order\u ID,因此一个订单可以有多个Rooflight\

  • 我想从学说查询得到数组。我有自我参照实体 应用程序\实体\AccessModom 在此存储库中 应用程序\实体\AccessModuleRepository 这种返回与子级和父级对象的匹配。但是当我想把这个查询作为数组

  • 在blade模板中显示查询结果时,我遇到了一些困难。基本情况:我有两张桌子;国家和发行人。国家模型与发行人有许多关系,反之亦然。这两种关系都在模型中正确定义。我试图显示一个发行人列表,其中也包含该国的名称(国家)。我在IssuersController中的查询如下: 此查询在dd()中有效;显示它为每个发卡机构返回一个数组,其中包括所有发卡机构数据以及相应的国家名称(如nation)。完美的然而,

  • 我正在制作一个php注册脚本,注册工作正常,所有内容都已成功输入数据库,激活电子邮件工作正常,但每当我使用mysqli查询来选择或更新信息时,它都不起作用。 例如,当我使用我知道数据库中存在的帐户登录时,它告诉我用户名不存在,当单击电子邮件中的激活链接时,查询无法以相同的方式更新数据库。 我相信这是一个非常简单的错误,我忽略了我的新手,但我找了几个小时后找不到合适的答案。我真的不确定问题出在哪里。