Php 与许多人的关系,没有这个
我希望获得所有不带House的用户(即-不在UserHouse表中)-这将返回用户3和5 我知道,我可以使用:Php 与许多人的关系,没有这个,php,mysql,sql,doctrine,Php,Mysql,Sql,Doctrine,我希望获得所有不带House的用户(即-不在UserHouse表中)-这将返回用户3和5 我知道,我可以使用: User: id | name 1 | one 2 | two 3 | three 4 | four 5 | five House: id | name 1 | London 2 | Barcelona UserHouse: id_user | id_house 1 | 1 2 | 2 4 | 1 $q = Doctri
User:
id | name
1 | one
2 | two
3 | three
4 | four
5 | five
House:
id | name
1 | London
2 | Barcelona
UserHouse:
id_user | id_house
1 | 1
2 | 2
4 | 1
$q = Doctrine_Query::create()
->from('User u')
// many selectors here
->leftJoin('u.UserHouse uh')
->addWhere('????????');
$users = $q->execute();
和用户的下一个关系,但我必须拥有和使用:
->from('UserHouse uh')
因为我将此查询与许多选择器一起使用-无法编辑此查询。我必须从('User u')开始使用->
那么,我必须填写->addWhere('?????????')什么内容才能返回没有房子的用户
如果不使用条令,如何使用简单的SQL实现这一点?在SQL中,这种类型的查询需要一种称为
异常联接的方法。一些RDBMS实际上将其作为单独的类型实现(如DB2),而其他RDBMS则需要使用变通方法。在您的情况下,它相当于(SQL):
这是预期的“不在房子里”记录
在这个网站的许多地方都有类似的例子
我从来没用过教义,所以我帮不了你。但我最好的猜测是:
SELECT User.*
FROM User
LEFT JOIN UserHouse
ON UserHouse.id_user = User.id
WHERE UserHouse.id_user IS NULL
或
为什么会有这么多的反对票?在任何情况下,这基本上是一个异常连接
类型的查询-这里有很多mySQL的例子;其中大多数涉及检查左联接
-表的某些属性是否为空
。。。我不知道这是怎么翻译成教义的,不过('uh是空的'?)。@X-Zero请添加新的答案:)
SELECT User.*
FROM User
LEFT JOIN UserHouse
ON UserHouse.id_user = User.id
WHERE UserHouse.id_user IS NULL
addWhere('uh IS NULL')
addWhere('uh.id_user IS NULL')