Yii2 запрос с и или в где условие - PullRequest
1 голос
/ 10 июля 2019

Привет, я пытаюсь преобразовать этот запрос в активный формат записи.

SELECT cmaindb, eshdr1, ascsnr, takpplz, takpadr
FROM ts_stats
 WHERE (cmaindb = 'tam' OR cmaindb = 'soc')
 AND (nproduktiv = 1) 
 OR  (cmaindb = 'tc') 
 AND (nabrfirm = 5) 
 AND (nproduktiv = 1)

код, который я пробовал

return self::find()
     ->andWhere(['or',
       ['cmaindb'=> 'tam'],
       ['cmaindb'=> 'soc']
     ])
     ->andWhere(['nproduktiv'=>1])
     ->orWhere(['cmaindb' => 'tc'])
     ->andWhere(['nabrfirm '=>5, 'nproduktivs'=>1])
     ->all();

это не удастся

Ответы [ 2 ]

1 голос
/ 10 июля 2019

Попробуйте это

$cmaindbs = array('tam'=>'tam', 'soc'=>'soc');
return self::find()
     ->where(['IN', 'cmaindb' , $cmaindbs])
     ->andWhere(['nproduktiv' => 1])
     ->orWhere(['cmaindb' => 'tc'])
     ->andWhere(['nabrfirm' => 5])
     ->andWhere(['nproduktivs' => 1])
     ->all();
0 голосов
/ 12 июля 2019

Давайте дополнительно оптимизируем ваш запрос:

return self::find()
     ->where(['IN', 'cmaindb' , ['tam', 'soc', 'tc'])
     ->andWhere(['nproduktiv' => 1])
     ->andWhere(['nabrfirm' => 5])
     ->andWhere(['nproduktivs' => 1])
     ->all();
...