I have two Tables in symfony join by ManyToOne bidirectional relationship. articles and dates.
I have in result ALL the articles except a.id : 4 because one of them doesn't respond to the condition.
I found the solution but how can I symplify it ? I know it's not optimised. And I would like to.
In my table (dates) i have :
+----------------------------
| id | a.id | OK OR NOT ?
+----------------------------
| 1 | 4 | OK
| 2 | 4 | OK
| 3 | 6 | OK
| 4 | 5 | OK
| 5 | 4 | **NOTOK**
----------------------------
$qb = $this->createQueryBuilder('a');
$allIndispo = $qb
->select('a.id')
->leftJoin('a.dates','d')
->where('**NOTOK**')
->orderBy('a.id', 'ASC')
->getQuery()
->getResult();
$allIndispoId = array();
foreach ($allIndispo as $key => $value) {
foreach ($allIndispo[$key] as $key2 => $value2) {
$allIndispoId[] = $value2;
}
}
$allDispo = $this->createQueryBuilder('a')
->select('a')
->where($qb->expr()->notIn('a.id', "'".implode($allIndispoId, "', '")."'"))
->getQuery()
->getResult();
return $allDispo;