将 SQL 子查询返回为布尔字段?

jer*_*ere 5 mysql boolean doctrine-orm

我想做这样的事情(sql 与伪代码的混合):

在此示例中,我们假设有一个单独的电话号码表:

人: person_id、person_name、person_lastName
电话号码: phonenmb_id、phonenmb_number、phonenmb_person_id

SELECT p.name, p.lastName, hasPhoneNumber = hasPhoneNumber(someNumber)

在这个例子中,我想从一个人那里获取一些数据,并给定一个特定的电话号码,如果这个人的号码列表中有该号码,则返回 TRUE,如果没有,则返回 FALSE。

如果有人可以提供有关如何直接使用 Doctrine 和 DQL 执行此操作的提示,那就太棒了,否则我将自己将其翻译为 DQL。

Ike*_*ker 5

一种方法是使用 person_id 和电话号码外连接到电话号码表,然后检查外连接是否满足以计算布尔值。

使用您的架构的示例:

SELECT p.person_name, p.person_lastName, 
  (pn.phonenmb_id IS NOT NULL) as hasPhoneNumber
FROM person p
  LEFT OUTER JOIN phone_number pn on pn.phonenmb_person_id = p.person_id 
                                 and pn.phonenmb_number = someNumber
GROUP BY p.person_name, p.person_lastName
Run Code Online (Sandbox Code Playgroud)