Përdorni tabelën me strukturën:
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
dhe dua të zgjedh të gjitha rreshtat që kanë nevojë për nënvarg në id.
d.m.th. Më duhen të gjitha rreshtat që kanë nënvarg në id: /string/id1 dhe /string/id2
Pyetja duhet të jetë e lehtë - sql e thjeshtë:
select * from table_name where id LIKE '/string/id1%' OR id LIKE '/string/id2%';
Rezultati duhet të jetë:
id | count
/string/id1 | 3
/string/id1/r1 | 2
/string/id1/r2 | 1
/string/id2/r1 | 2
/string/id2 | 3
/string/id2/r1 | 2
Fatkeqësisht, nëse përpiqeni të përdorni të njëjtin pyetje në simfoninë dhe doktrinën2:
$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();
Pyetja e thjeshtë duket e njëjtë si select * from table_name where id LIKE '/string/id1%' OR id LIKE '/string/id2%';
, por rezultatet nuk janë.
rezultatet përmbajnë vetëm rreshtat e artikullit të fundit në ID - /string/id2
id | count
/string/id2/r1 | 2
/string/id2 | 3
/string/id2/r1 | 2
Si ta zgjidhim atë? Ku është gabimi im? Keni ndonjë sugjerim?