php – 子查询ActiveRecord Yii
发布时间:2020-12-13 18:10:56 所属栏目:PHP教程 来源:网络整理
导读:是否可以在Yii中的ActiveRecord中进行子查询? 我有这样的查询: 从table1中选择* table1.field1 in(从table2中选择table2.field2) 我目前正在使用以下代码: object1 :: model() – findAll(array(‘condition’=’t.field1 in(select table2.field2 from t
是否可以在Yii中的ActiveRecord中进行子查询?
我有这样的查询: 从table1中选择* 我目前正在使用以下代码: object1 :: model() – > findAll(array(‘condition’=>’t.field1 in(select table2.field2 from table2)’)) [编辑] 有什么解决方案吗? 并提前感谢.
首先按db字段查找doublets:
$model=new MyModel('search'); $model->unsetAttributes(); $criteria=new CDbCriteria(); $criteria->select='col1,col2,col3'; $criteria->group = 'col1,col3'; $criteria->having = 'COUNT(col1) > 1 AND COUNT(col2) > 1 AND COUNT(col3) > 1'; 获取子查询: $subQuery=$model->getCommandBuilder()->createFindCommand($model->getTableSchema(),$criteria)->getText(); 添加子查询条件: $mainCriteria=new CDbCriteria(); $mainCriteria->condition=' (col1,col3) in ('.$subQuery.') '; $mainCriteria->order = 'col1,col3'; 如何使用: $result = MyModel::model()->findAll($mainCriteria); 要么: $dataProvider = new CActiveDataProvider('MyModel',array( 'criteria'=>$mainCriteria,)); 资料来源:http://www.yiiframework.com/wiki/364/using-sub-query-for-doubletts/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |