子查询ActiveRecord Yii

编程入门 行业动态 更新时间:2024-10-26 19:28:21
本文介绍了子查询ActiveRecord Yii的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

是否可以在Yii的ActiveRecord中进行子查询?

Is it possible to make sub-queries in ActiveRecord in Yii?

我有这样的查询:

select * from table1 where table1.field1 in (select table2.field2 from table2)

select * from table1 where table1.field1 in (select table2.field2 from table2)

我当前正在使用休闲代码:

i'm currently using the fallowing code:

object1::model()->findAll(array('condition'=>'t.field1 in (select table2.field2 from table2)'))

我想知道是否有一种方法可以在不使用SQL且不使用联接的情况下构造子查询.

i would like to know if there is a manner to construct the sub-query without using SQL, and without using joins.

有什么解决办法吗?

在此先感谢

推荐答案

首先通过db字段查找doublet:

First find doublets by db fields:

$model=new MyModel('search'); $model->unsetAttributes(); $criteria=new CDbCriteria(); $criteria->select='col1,col2,col3'; $criteria->group = 'col1,col2,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,col2,col3) in ('.$subQuery.') '; $mainCriteria->order = 'col1,col2,col3';

使用方法:

$result = MyModel::model()->findAll($mainCriteria);

或者:

$dataProvider = new CActiveDataProvider('MyModel', array( 'criteria'=>$mainCriteria, ));

来源: www.yiiframework/wiki/364/using-sub-query-for-doubletts/

更多推荐

子查询ActiveRecord Yii

本文发布于:2023-10-22 08:12:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1516954.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:ActiveRecord   Yii

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!