>source

다음 SQL 쿼리가 있습니다.

   $uidArray = explode(",", $uids);
        foreach ($uidArray as $uid) {
            $dynamicUid[] = '`uid` LIKE \''.$uid.'\'';
        }
        $query = $this->createQuery();
        $query->statement("SELECT * FROM `tx_myextension_domain_model_thi` WHERE ".implode($dynamicUid, " OR "));
        return $query->execute();

이것은 잘 작동하지만 다음과 같이하고 싶습니다.

$uidArray = explode(",", $uids);
        $query = $this->createQuery();
        foreach ($uidArray as $key => $value) {
            $constraints[] =  $query->equals('uid', $value);
        }
        return $query->matching(
            $query->logicalAnd($constraints)
        )->execute();

여기에 쿼리 파서로 다음 출력이 표시됩니다.

'SELECT `tx_myextension_domain_model_thi`.* FROM `tx_myextension_domain_model_thi` 
`tx_myextension_domain_model_thi` 
WHERE ((`tx_myextension_domain_model_thi`.`uid` = :dcValue1) AND 
(`tx_myextension_domain_model_thi`.`uid` = :dcValue2)) AND 
(`tx_myextension_domain_model_thi`.`sys_language_uid` IN (0, -1)) AND 
(`tx_myextension_domain_model_thi`.`pid` = 0) AND 
((`tx_myextension_domain_model_thi`.`deleted` = 0) AND (
`tx_myextension_domain_model_thi`.`t3ver_state` <= 0) AND 
(`tx_myextension_domain_model_thi`.`pid` <> -1) AND 
(`tx_myextension_domain_model_thi`.`hidden` = 0) AND 
(`tx_myextension_domain_model_thi`.`starttime` <= 1607084460) AND 
((`tx_myextension_domain_model_thi`.`endtime` = 0)
    OR (`tx_myextension_domain_model_thi`.`endtime` > 1607084460)))'

그리고 uid는 dcValue-Array입니다.

  dcValue1 => '1' (1 chars)
   dcValue2 => '2' (1 chars)

불행히도 더 이상 얻을 수 없기 때문에 누군가가 이것을 다시 작성하도록 도울 수 있습니다!

감사 :)

  • 답변 # 1

    in 연산자를 사용해 보셨습니까?

    public function yourFunctionName($uid) 
     {
        $query = $this->createQuery();
        $query->in('uid', $uidArray);
       return $query->execute();
     }
    
    

    배열이 다음과 같다고 가정합니다.

    $uidArray = [
      0 = '34',
      1 = '15',
      3 = '88'
    ]
    
    

    편집하다

    객체가 어디에 저장되어 있는지 신경 쓰지 않는다면 다음을 수행 할 수 있습니다.

    public function yourFunctionName($uid) 
    {
       $query = $this->createQuery();
       $query->getQuerySettings()->setRespectStoragePage(FALSE);
       $query->matching(
           $query->in('uid', $uidArray)
       );
      return $query->execute()];
     }
    
    

    무시할 것입니다 pid 쿼리에서

  • 이전 flutter_inappwebview 로컬 https 연결이 flutter 앱에서 거부되었습니다
  • 다음 plot - 다른 기호로 각 시리즈를 플로팅하는 gnuplot