我有一個問題,我的剋星:SQL/DQL 我有一個實體:樣式和實體投票。樣式可以有很多投票(如你所想象的),一個投票只與一個樣式鏈接。學說按指數搜索表
我現在想要搜索的投票少於特定金額(這是用戶輸入,但假設它是5)的樣式。這是我與QueryBuilder的
$qb = $this->createQueryBuilder('s');
$qb
->select("s")
->join('s.votes', 'v')
->addSelect("COUNT(v.id) as voteCount")
->where("voteCount < ?1")
->orderBy('voteCount', "DESC")
->setMaxResults(3)
->setFirstResult(0)
->groupBy('s.id')
->setParameter(1, 5);
$query = $qb->getQuery();
$result = $query->getResult();
使用一次,我嘗試執行查詢的代碼,它基本上說,我voteCount未在where子句中已知的。這是確切的錯誤信息
An exception occurred while executing 'SELECT s0_.active AS active0, s0_.views AS views1, s0_.description AS description2, s0_.name AS name3, s0_.id AS id4, s0_.updated AS updated5, s0_.created AS created6, COUNT(v1_.id) AS sclr7, s0_.battle_id AS battle_id8, s0_.user_id AS user_id9, s0_.voucher_id AS voucher_id10 FROM Style s0_ INNER JOIN Vote v1_ ON s0_.id = v1_.style_id WHERE sclr7 < ? GROUP BY s0_.id ORDER BY sclr7 DESC LIMIT 3 OFFSET 0' with params [1]:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'sclr7' in 'where clause'
我做錯了什麼?我如何搜索vor voteCount?
$ QB->其中( 「voteCount <1?」);使用$ qb-> where(「COUNT(v.id)<?1」);只是爲了測試 – AlixB
你可以看到http://stackoverflow.com/a/16938758/3469608,希望它會幫助 – AlixB