Maison  >  Article  >  développement back-end  >  Résumé des exemples de méthodes courantes dans Yii CDBCriteria

Résumé des exemples de méthodes courantes dans Yii CDBCriteria

高洛峰
高洛峰original
2017-01-21 11:50:011159parcourir

Les exemples de cet article décrivent les méthodes courantes de Yii CDBCriteria. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Remarque : $c = new CDbCriteria(); est une façon d'écrire ActiveRecord, qui rend ActiveRecord plus flexible, au lieu de DAO (PDO) et Générateur de requêtes dans le manuel.

Un petit commentaire : j'ai l'impression que cette partie du manuel est moyenne.

Adresse du lien : http://www.yiiframework.com/doc/api/1.1/CDbCriteria

Voici quelques notes et utilisation courante de Yii CDbCriteria :

一, une situation d'assemblage SQL

Code Php :

$criteria = new CDbCriteria;
//函数方式
$criteria->addCondition("id=1"); //查询条件,即where id = 1
$criteria->addInCondition('id', array(1,2,3,4,5)); //代表where id IN (1,23,,4,5,);
$criteria->addNotInCondition('id', array(1,2,3,4,5));//与上面正好相法,是NOT IN
$criteria->addCondition('id=1','OR');//这是OR条件,多个条件的时候,该条件是OR而非AND
$criteria->addSearchCondition('name', '分类');//搜索条件,其实代表了。。where name like '%分类%'
$criteria->addBetweenCondition('id', 1, 4);//between 1 and 4
$criteria->compare('id', 1); //这个方法比较特殊,他会根据你的参数自动处理成addCondition或者addInCondition,
//即如果第二个参数是数组就会调用addInCondition
$criteria->addCondition("id = :id");
$criteria->params[':id']=1;
//属性方式
$criteria->select = 'id,parentid,name'; //代表了要查询的字段,默认select='*';
$criteria->join = 'xxx'; //连接表
$criteria->with = 'xxx'; //调用relations
$criteria->limit = 10; //取1条数据,如果小于0,则不作处理
$criteria->offset = 1; //两条合并起来,则表示 limit 10 offset 1,或者代表了。limit 1,10
$criteria->order = 'xxx DESC,XXX ASC' ;//排序条件
$criteria->group = 'group 条件';
$criteria->having = 'having 条件 ';
$criteria->distinct = FALSE; //是否唯一查询

Instance :

Code Php :

$criteria = new CDbCriteria();
$criteria->select = 'table_name,model_id,sum(amount) total';
$criteria->group = 'table_name,model_id';
$criteria->addCondition("$nIdcId=4");//也可以$criteria->condition = "$nIdcId=4";
$aResult = accessory_info::model()->findAll($criteria);
$c = new CDbCriteria();
$c->select = 't.id, t.created_at, t.outsource_id, t.user_id, t.operate, t.content';
$c->join = 'LEFT JOIN outsource ON outsource.id=t.outsource_id';
$c->condition = 'outsource.idc_id IN(' . implode(',', $idc_ids) . ')';
if($last_log_id) {
$c->condition .= " AND t.id > $last_log_id";
}
$c->limit = 20;
$c->order = 't.id DESC';
$logs = OutsourceProcessLog::model()->findAll($c);

Annotations :

1. La différence avec la méthode DAO est que chaque élément du tableau de la méthode DAO est toujours un tableau. Avec la méthode CDbCriteria, les éléments du tableau sont des objets.
2. Même si cette fonction est très puissante, certaines exigences ne peuvent toujours pas être remplies et des instructions SQL sont toujours nécessaires. Par exemple, sélectionnez le montant moyen (num) parmi ****.
3. Imprimez les résultats après l'exécution, et vous pourrez en savoir plus sur la façon dont Yii implémente ce

Code Php :

//可见
$c = new CDbCriteria();
$c->join = "JOIN idc_user on t.id=idc_user.user_id";
$c->condition = "idc_user.idc_id=$idc_id";
//运行后
object(CDbCriteria)#98 (12) { ["select"]=> string(1) "*" ["distinct"]=> bool(false) ["condition"]=> string(17) "idc_user.idc_id=6" ["params"]=> array(0) { } ["limit"]=> int(-1) ["offset"]=> int(-1) ["order"]=> string(0) "" ["group"]=> string(0) "" ["join"]=> string(38) "JOIN idc_user on t.id=idc_user.user_id" ["having"]=> string(0) "" ["with"]=> NULL ["alias"]=> NULL }
//User::model()->with('Idcs')->findAll($c)

2. Le cas de mergeWith

Code PHP :

//在ActiveRecord中,增加条件限制
$this->getDbCriteria()->mergeWith(array(
'condition'=>"idc_id IN ($ids)",
));

J'espère que cet article sera utile à la conception de programmes PHP de chacun basé sur le framework Yii.

Pour plus d'exemples de méthodes courantes Yii CDBCriteria et d'articles récapitulatifs connexes, veuillez prêter attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn