2016-07-26 89 views
1

在标记为重复问题之前,请仔细阅读它。我在这里有不同的问题。我想用yii2搜索模型生成这种查询。如何在AndWhere中使用嵌套条件yii2

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

谢谢哥们.. :-) –