我想通過查詢生成器構建查詢。Symfony - Doctrine QueryBuilder生成錯誤的sql
$photosQuery = $photoRepository->createQueryBuilder('p')
->join('AppBundle:User', 'u')
->where('LOWER(p.title) LIKE :phrase OR LOWER(u.username) LIKE :phrase AND p.isActive = :isActive AND p.isModerated = :isModerated')
->setParameter('phrase', '%'.strtolower($phrase).'%')
->setParameter('isActive', true)
->setParameter('isModerated', true)
->getQuery();
它給了我
SELECT p0_.id AS id_0,
p0_.title AS title_1,
p0_.description AS description_2,
p0_.name AS name_3,
p0_.creation_date AS creation_date_4,
p0_.edit_date AS edit_date_5,
p0_.is_moderated AS is_moderated_6,
p0_.moderation_date AS moderation_date_7,
p0_.is_active AS is_active_8,
p0_.user_id AS user_id_9,
p0_.category_id AS category_id_10
FROM photos p0_
INNER JOIN users u1_ ON (LOWER(p0_.title) LIKE ?
OR LOWER(u1_.username) LIKE ?
AND p0_.is_active = ?
AND p0_.is_moderated = ?)
爲什麼我在加入ON()
部分WHERE
參數,而不是傳統的WHERE
?
謝謝!
嘗試將您的連接更改爲' - >連接('p.user','u')' –
Jason,謝謝! – Tigran
我增加了一個答案,更具體地解釋了爲什麼會發生這種情況,以及將來如何解決這個問題,而不是犯同樣的錯誤。 –