我剛剛遇到了一件非常煩人的事情。我有一個查詢生成器:原則查詢生成器錯誤結果
$queryBuilder
->select('a')
->addSelect('am')
->addSelect('m')
->addSelect('c')
->addSelect('t')
->leftJoin('a.articleMedias', 'am')
->leftJoin('am.media', 'm')
->leftJoin('a.categories', 'c')
->leftJoin('a.translations', 't')
->add('where', $queryBuilder->expr()->in('a.site', $ids))
;
當我得到的結果,我得到192個對象。 問題是,當我轉儲SQL並直接執行到數據庫,我得到529對象。但這是相同的查詢!
有人知道造成這兩個結果之間的差距的原因?
編輯:發現了一些東西。當我做一個計數查詢時,我得到了203個結果,但是當我做一個正常的結果並計算結果時,我得到了192個結果。這是否意味着教條有最大變異或什麼?
編輯2:它似乎是特定於我的應用程序的繼承問題。再次感謝您的幫助。
什麼是SQL查詢,你都做了些什麼? –
這是因爲leftJoins的。如果在數據庫查詢密切關注結果你會發現有多行含有'a'的行多次出現,而連接的內容不同。試着在你的本地sql查詢中添加一個'GROUP BY a.id' (這將消除大量的數據,但它應該降低到192個結果,因爲每個輸入項只會顯示一次)。 – Joe
感謝您的回覆。我發現了一些可能導致某些事情的東西。當我做一個SQL計數()查詢我得到203結果。但是當我做一個getResult()和一個PHP計數()時,我得到了192.這真的很奇怪,我實際上有點迷茫。 –