doutui4649 2016-05-26 12:24
浏览 37
已采纳

Symfony / Doctrine - 如何解释此代码?

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;
  • 写回答

1条回答 默认 最新

  • dongyupen6269 2016-05-26 12:58
    关注

    Try to use the first query as subquery for the second, as example:

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

    Hope this help

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)
  • ¥15 机器人轨迹规划相关问题
  • ¥15 word样式右侧翻页键消失