加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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中选择*
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/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读