Maison > développement back-end > tutoriel php > Comparaison des méthodes pour rechercher des champs spécifiés à l'aide de find findAll dans le framework Yii

Comparaison des méthodes pour rechercher des champs spécifiés à l'aide de find findAll dans le framework Yii

高洛峰
Libérer: 2023-03-05 13:30:02
original
1282 Les gens l'ont consulté

Comme nous le savons tous

modelName::model() -> find()  //Ce qui est trouvé est un objet
modelName::model() -> findALL()  // Ce qui est trouvé Il s'agit d'un tableau de collections d'objets
Comment trouver les données des champs dont j'ai besoin, pas les données de tous les champs

Je l'ai déjà fait

$criteria = new CDbCriteria;
$criteria->select = 'username,id,email';
$criteria->order = 'id DESC';
$users = modelName::model()->findAll( $criteria );
Copier après la connexion

J'ai accidentellement vu quelqu'un d'autre écrire quelque chose comme ça en arrière-plan et j'ai réalisé à quel point j'étais ignorant

$users = modelName::model()->findAll(array(
  'select' =>array('username','id','email'),
  'order' => 'id DESC',
));
Copier après la connexion

Après l'avoir testé, j'ai trouvé que cela fonctionnait, alors find peut également le faire

$user = modelName::model()->find(array(
  'select' =>array('username','id','email'),
  'order' => 'id DESC',
  'condition' => 'id='.$id,
));
Copier après la connexion

Bien sûr, ce n'est certainement pas sûr de faire cela. Vous pouvez également utiliser la méthode suivante

$users = $this->user->find(array(
  'select'=>array('id','username','email'),
  'order' => 'id DESC',
  'condition' => 'state=:state AND id=:id',
  'params' => array(':state'=>'1',':id' => '2'),
));
Copier après la connexion

<🎜. >

Utilisez findAll de la même manière pour tester C'est ok. Conclusion

Cette méthode peut facilement obtenir les données requises. Bien sûr, lorsque la pagination est nécessaire, de nouvelles sont toujours nécessaires pour les CDbCriteria suivants. > Par exemple, je souhaite supprimer les données de la table videoinfo 'v_id', 'title', 'big_class', 'sub_class', 'upload_time', 'comment_num' et d'autres champs, et la condition est status=1. , suivez lastmodifytime dans l'ordre inverse, et n'en supprimez que 3, faites ceci :

$criteria = new CDbCriteria() ;
$criteria -> select = array(&#39;v_id&#39;,&#39;title&#39;,&#39;big_class&#39;,&#39;sub_class&#39;,&#39;upload_time&#39;,&#39;comment_num&#39;);    
$criteria -> condition = &#39;status = 1&#39;;
$criteria -> order = &#39;lastmodifytime desc&#39;;
$criteria -> limit = 3;
 $criteria ->params = array (&#39;:status&#39; => $你的变量) ;
$result = VideoInfo::model()->findAll($criteria);
Copier après la connexion
La ligne que j'ai commentée peut être utilisée pour transmettre des variables, représentées par des espaces réservés. Par exemple, si votre statut doit être attribué de manière conditionnelle en fonction de variables, vous pouvez le commenter Affectation de ligne, puis écrire la condition comme

$criteria -> condition = &#39;status = :status&#39;;
Copier après la connexion
De cette façon, la variable $result est le résultat que vous obtenez. C'est une liste d'objets et doit être parcourue :


Par exemple, si vous souhaitez afficher chaque champ, tapez simplement
foreach ($result as $ob){
      print_r($ob->attributes);
 }
Copier après la connexion

et ainsi de suite
$ob->attributes[&#39;title&#39;];
Copier après la connexion

Enfin, la classe CPagination peut être utilisée avec la classe CDbCriteria et le plug-in de pagination frontale pour prendre en charge la pagination. :

$count =VideoInfo::model()->count($criteria)
 
$pages=new CPagination($count);   
$pages->pageSize=30; //每页分多少条
$pages->applyLimit($criteria);
Copier après la connexion
$result = VideoInfo::model()->findAll($criteria);
Copier après la connexion

Plus find findAll dans le framework Yii Pour les articles connexes sur la façon de connaître les champs spécifiés, veuillez faire attention au PHP Site 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