Symfony / Doctrine - 我怎样才能符号化这个代码



我在symfony中有两个表,通过ManyToOne双向关系连接。 文章和日期。

我有除 a.id :4 以外的所有文章,因为其中一个对条件没有反应。

我找到了解决方案,但我如何理解它?我知道它没有优化。我愿意。

在我的表格(日期)中,我有:

+----------------------------
| 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;

尝试使用第一个查询作为第二个查询的子查询,例如:

$qb = $this->createQueryBuilder('a2');  //We need a different alias here
    $allIndispo = $qb
        ->select('a2.id')
        ->leftJoin('a2.dates','d')
        ->where('**NOTOK**') // so take care to change the table alias here also
        ->orderBy('a2.id', 'ASC');

$allDispo = $this->createQueryBuilder('a')
    ->select('a')
    ->where($qb->expr()->notIn('a.id', $subQuery->getDQL()))
    ->getQuery()
    ->getResult();
return $allDispo;

希望这个帮助

相关内容

  • 没有找到相关文章

最新更新