亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

連接表中的 Symfony 4 查詢元素(如果存在)

連接表中的 Symfony 4 查詢元素(如果存在)

PHP
qq_笑_17 2023-04-21 10:42:43
$avoidTags我有兩個表 gifts 和 gift_tags 只有當禮物有標簽時,我如何才能選擇所有帶有標簽的禮物,這些標簽不存在于數組中。我的查詢現在的工作方式是只選擇在 gift_tags 表中至少有一個標簽并且不在$avoidTags數組中的禮物,但我還需要那些根本沒有標簽的禮物。$response = $qb             ->select('g, tags')             ->leftJoin('g.tags', 'tags')             ->andwhere($qb->expr()->notin("tags.name", ":avoidTags"))             ->setParameters(new ArrayCollection([                             new Parameter('avoidTags', $avoidTags),             ]))             ->getQuery()             ->getResult();
查看完整描述

1 回答

?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

使用mysql,它可以用這個查詢


SELECT 

  gift.*, tag.* 

FROM 

  gift 

LEFT JOIN tag ON gift.id = tag.gift_id

  WHERE gift.id NOT IN (

    SELECT g.id FROM gift AS g LEFT JOIN tag AS t ON g.id = t.gift_id WHERE t.name IN ('test', 'test2')

  )

所以根據 QB 學說,它可能是這樣的


 $subQb = $this->_em->createQueryBuilder()

            ->select('gift.id')

            ->leftJoin('gift.tags', 'tags')

            ->where($qb->expr()->orX(

                $qb->expr()->in("tags.name", ":avoidTags")),

            ))

            ->getQuery();


$response = $qb

        ->select('g, tags')

        ->leftJoin('g.tags', 't')

        ->where($qb->expr()->notin("g.id", $subQb->getDql())))

        ->setParameters(new ArrayCollection([

            new Parameter('avoidTags', $avoidTags),

        ]))

        ->getQuery()

        ->getResult();


查看完整回答
反對 回復 2023-04-21
  • 1 回答
  • 0 關注
  • 142 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號