gpt4 book ai didi

yii - ActiveDataProvider :"query"属性必须是实现 QueryInterface 的类的实例

转载 作者:行者123 更新时间:2023-12-02 09:33:58 39 4
gpt4 key购买 nike

我正在使用一个自定义的函数,它封装了 findBySql() 以返回行。但是得到了标题中显示的错误。但是如果我测试使用封装 find() 的自定义函数,它会起作用,为什么?

这是我的操作:

public function actionList()
{
$model = new Loan();
$dataProvider = new ActiveDataProvider(
[
'query' => $model->findValid($_GET['type']),//error comes here
'pagination' => [
'pagesize' => '2',
],
]);

return $this->renderPartial('list', ['model' => $model, 'dataProvider' => $dataProvider]);
}

下面是对象 loan 的 findxx 函数:

 public function findValid($type=null)
{
if($type==null){
return static::findBySql("select * from loan where wmstat&1=1 and (wmstat>>2)&1=0")->all();
}else{
return static::findBySql("select * from loan where wmstat&1=1 and (wmstat>>2)&1=0 and origin="."'".$type."'")->all();
}
}

另外,我可以使用 find() 和 where() 更改位操作并达到相同的效果吗?

最佳答案

错误很明显,query 需要有效的查询实例,而您传递的是查询结果而不是查询本身。

删除 findValid() 方法中的 ->all() 调用,它应该可以工作。

P.S. 我强烈建议重构您的代码以达到更好的状态。

官方文档:

关于yii - ActiveDataProvider :"query"属性必须是实现 QueryInterface 的类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29343867/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com