如何通过 Doctrine QueryBuilder 从 SQL 构建查询?
How to build query from SQL by Doctrine QueryBuilder?
我是 Doctrine ORM 的新手,我需要有关构建 QueryBuilder 命令的帮助。我有一个 SQL 命令,我需要隐蔽到 QueryBuilder。
$qb = $this->entityManager->createQueryBuilder();
SQL是:
SELECT `user`.*
FROM `user`
JOIN `friends` ON `user`.`id` != $uid AND (`user`.`id` = `friends`.`origin` OR `user`.`id` = `friends`.`destination`)
WHERE `friends`.`origin` = $uid OR `friends`.`destination` = $uid;
`user` 是 App\Model\Database\Entity\User
`friends` 是 App\Model\Database\Entity\Friends
$uid
是我想见其好友的用户。作为查询的结果,我需要 User
个实体数组。
Friends
很简单 table 具有唯一 ID 和 origin
和 destination
,它们是 User
ID,当我想向某人询问时友谊,origin
将是我的 UID,destination
将是他的 UID。上面这个功能是为了让用户加好友,不管谁叫的加好友。
有人可以帮我吗?
我想您可以将 SQL 转换为 DQL,它看起来类似于
SELECT u
FROM App\Model\Database\Entity\User u
JOIN App\Model\Database\Entity\Friends f WITH u.id != :uid
AND (u.id = f.origin OR u.id = f.destination)
WHERE f.origin = :uid OR f.destination = :uid
在查询生成器中,您可以将其写为
$em->createQuery('
SELECT u
FROM App\Model\Database\Entity\User u
JOIN App\Model\Database\Entity\Friends f WITH u.id != :uid
AND (u.id = f.origin OR u.id = f.destination)
WHERE f.origin = :uid OR f.destination = :uid'
)->setParameters(array(
'uid' => $uid
));
我是 Doctrine ORM 的新手,我需要有关构建 QueryBuilder 命令的帮助。我有一个 SQL 命令,我需要隐蔽到 QueryBuilder。
$qb = $this->entityManager->createQueryBuilder();
SQL是:
SELECT `user`.*
FROM `user`
JOIN `friends` ON `user`.`id` != $uid AND (`user`.`id` = `friends`.`origin` OR `user`.`id` = `friends`.`destination`)
WHERE `friends`.`origin` = $uid OR `friends`.`destination` = $uid;
`user` 是 App\Model\Database\Entity\User
`friends` 是 App\Model\Database\Entity\Friends
$uid
是我想见其好友的用户。作为查询的结果,我需要 User
个实体数组。
Friends
很简单 table 具有唯一 ID 和 origin
和 destination
,它们是 User
ID,当我想向某人询问时友谊,origin
将是我的 UID,destination
将是他的 UID。上面这个功能是为了让用户加好友,不管谁叫的加好友。
有人可以帮我吗?
我想您可以将 SQL 转换为 DQL,它看起来类似于
SELECT u
FROM App\Model\Database\Entity\User u
JOIN App\Model\Database\Entity\Friends f WITH u.id != :uid
AND (u.id = f.origin OR u.id = f.destination)
WHERE f.origin = :uid OR f.destination = :uid
在查询生成器中,您可以将其写为
$em->createQuery('
SELECT u
FROM App\Model\Database\Entity\User u
JOIN App\Model\Database\Entity\Friends f WITH u.id != :uid
AND (u.id = f.origin OR u.id = f.destination)
WHERE f.origin = :uid OR f.destination = :uid'
)->setParameters(array(
'uid' => $uid
));