使用表結構:學說:多orWhere與LIKE條件
id | count
/string/id1 | 3
/string/id1/r1 | 2
/string/id1/r2 | 1
/string/id2/r1 | 2
/string/id2 | 3
/string/id2/r1 | 2
/string/id3/r1 | 5
,我想選擇哪個都需要在子ID 所有行。
即 我需要它有子中ID的所有行:/串/ ID1和/串/ ID2
查詢應該很容易 - 普通的SQL:
select * from table_name where id LIKE '/string/id1%' OR id LIKE '/string/id2%';
結果應該是:
id | count
/string/id1 | 3
/string/id1/r1 | 2
/string/id1/r2 | 1
/string/id2/r1 | 2
/string/id2 | 3
/string/id2/r1 | 2
不幸的是,如果您嘗試使用相同的查詢在Symfony和doctrine2:
$ids = array('/string/id1', '/string/id2');
$query = $this->createQueryBuilder('r')
->select('r');
foreach ($ids as $id) {
$query->orWhere("r.linkedId LIKE :id ")
->setParameter('id', $id."%");
}
$plainQuery = $query->getQuery()->getSQL();
$results = $query->getQuery()->getResult();
普通查詢看起來像select * from table_name where id LIKE '/string/id1%' OR id LIKE '/string/id2%';
一樣,但結果不是。
結果包含在IDS中最後一個項目的唯一行 - /串/ ID2
id | count
/string/id2/r1 | 2
/string/id2 | 3
/string/id2/r1 | 2
如何解決呢?我的錯誤在哪裏?你有什麼建議嗎?
如果您運行原始查詢什麼phpMyAdmin的節目?它是否包含正確的結果?如果是這樣的話,它就像是你的實體的'linkedId'字段上的映射問題。 – 2014-10-11 22:19:12