2016-07-26 6 views
1

중복 질문으로 표시하기 전에 친절하게 읽으십시오. 여기에 다른 문제가 있습니다. yii2 검색 모델을 사용하여 이러한 종류의 쿼리를 생성하려고합니다.yii2의 AndWhere에서 중첩 조건을 사용하는 방법

select * from t1 innerjoin t2 on (t1.id = t2.id) where ((t1.price >= '1000' and t1.price <= '5000') OR 
        (t2.price >= '1000' and t2.price <= '5000')) 

여기서는 문제가되지 않습니다. 가장 큰 문제는 where 절입니다. 나는 이것을 시도했지만 작동하지 않습니다.

$query->andFilterWhere([ 
        'and', 
        ['>=', 't1.price', $this>start_price], 
        ['<=', 't1.price', $this->end_price] 
       ]) 
     ->orFilterWhere([ 
         'and', 
         ['>=', 't2.price', $this->start_price], 
         ['<=', 't2.price', $this->end_price] 
       ]); 

답변

2

.. :-)

$query->andFilterWhere([ 
    'or', 
    [ 
     'and', 
     ['>=', 't1.price', $this>start_price], 
     ['<=', 't1.price', $this->end_price] 
    ], 
    [ 
     'and', 
     ['>=', 't2.price', $this->start_price], 
     ['<=', 't2.price', $this->end_price] 
    ] 
]); 
+0

덕분에 친구를보십시오 –