在Yii2中列出时出错

时间:2015-07-28 11:01:35

标签: php yii2

我正在学习Yii2,当我使用自定义查询列出时,我收到错误:

  

"查询" property必须是实现QueryInterface的类的实例,例如yii \ db \ Query或其子类。

我从查询中获取数据但是当我输入dataprovider时它给了我错误。这是我的代码:

public function search($params) {
    //$query = User::find();
    $query = new \yii\db\Query;
$query = $query->select(['user.*','tbl_region.id','tbl_region.regionName']) 
      ->from('user')
      ->join('LEFT JOIN','tbl_men_reg_info','tbl_men_reg_info.userID = user.id')
          ->join('LEFT JOIN','tbl_women_info','tbl_women_info.userID = user.id')  
          ->join('LEFT JOIN','tbl_region','tbl_men_reg_info.region = tbl_region.id');
    $command = $query->createCommand();
$query = $command->queryAll();
    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);
    return $dataProvider;
}

有人可以告诉我如何使用自定义查询进行列表吗?

1 个答案:

答案 0 :(得分:1)

错误很明显,您需要将yii\db\Query的实例传递给数据提供者,因此请删除以下行:

$command = $query->createCommand();
$query = $command->queryAll();

它应该有用。

请注意,您还需要使用SqlDataProvider代替ActiveDataProvider,因为不涉及模型。

同样修改具有不同类型和含义的变量被认为是不好的做法:

$query = $command->queryAll();

此时不是$query,最好将其重命名为$rows$results