Maison > développement back-end > tutoriel php > À propos des méthodes courantes de CDBCriteria dans Yii

À propos des méthodes courantes de CDBCriteria dans Yii

不言
Libérer: 2023-04-01 08:54:02
original
1869 Les gens l'ont consulté

Cet article présente principalement les méthodes courantes de Yii CDBCriteria, et résume et analyse les fonctions et méthodes communes de la classe CDBCriteria sous forme d'exemples. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer

<.>Les exemples de cet article décrivent les méthodes courantes de Yii CDBCriteria. Partagez-le avec tout le monde pour référence, comme suit :

Remarque : $c = new CDbCriteria(); est une façon d'écrire ActiveRecord, rendant ActiveRecord plus flexible, au lieu de DAO (PDO) et Query Constructeur.

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

Voici quelques notes et utilisation courante de Yii CDbCriteria :

1 La situation d'un assemblage SQL

Code PHP :

<.>

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

Exemple :

Code Php :

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

Annotation :

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(&#39;Idcs&#39;)->findAll($c)
Copier après la connexion

2. La situation de fusionAvec

Code PHP :

//在ActiveRecord中,增加条件限制
$this->getDbCriteria()->mergeWith(array(
&#39;condition&#39;=>"idc_id IN ($ids)",
));
Copier après la connexion

Le Nous espérons que l'ensemble du contenu de cet article sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez prêter attention au site Web PHP chinois !

Recommandations associées :

Comment implémenter le framework Yii pour générer et exécuter des instructions SQL sur la page et déboguer


Comment implémenter le framework Yii2 Utilisez PHPExcel pour exporter des fichiers Excel


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal