php – 子查询ActiveRecord Yii

前端之家收集整理的这篇文章主要介绍了php – 子查询ActiveRecord Yii前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以在Yii中的ActiveRecord中进行子查询

我有这样的查询

从table1中选择*
table1.field1 in(从table2中选择table2.field2)

我目前正在使用以下代码

object1 :: model() – > findAll(array(‘condition’=>’t.field1 in(select table2.field2 from table2)’))

[编辑]
我想知道是否有一种方法来构造子查询而不使用sql,并且不使用连接.

有什么解决方案吗?

并提前感谢.

首先按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/

猜你在找的PHP相关文章