2015-09-14 53 views
3

这是我的实际查询 -yii2 +连接查询的ActiveDataProvider

$dataProvider = new ActiveDataProvider([ 
      'query' => UserProfile::find()->with(['user']) 
     ]); 

'状态' 字段是在用户表中。所以我想过滤数据,其中状态!= 0但它失败。

我想这一点 -

$dataProvider = new ActiveDataProvider([ 
      'query' => UserProfile::find()->with(['user'])->where('user.status !=',0) 
     ]); 
$dataProvider = new ActiveDataProvider([ 
      'query' => UserProfile::find()->with(['user'])->where('<>','user.status',0) 
     ]); 

,可是没有工作。请让我怎么可能?

回答

2

您需要用此代码更改您的$dataProvider代码。

$dataProvider = new ActiveDataProvider([ 
      'query' => UserProfile::find()->joinWith(['user(relation_name)'])->where(['<>','user.status',0]) 
     ]); 
+0

已经尝试过。检查2 – Nisarg

+1

我在'where'函数中添加数组。 – GAMITG

+0

我得到这个错误 - SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'user.status' 正在执行的SQL是:SELECT COUNT(*)FROM'user_profile' WHERE'user' .'在'with()''user'中使用'status' <> 0 – Nisarg