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

Comparaison des méthodes de recherche de champs spécifiés à l'aide de findfindAll dans le framework Yii

高洛峰
Libérer: 2023-03-05 08:00:01
original
958 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
Plus de méthodes findfindAll pour trouver les champs spécifiés dans le framework Yii Pour les articles liés à la comparaison, veuillez faire attention au site Web PHP chinois !
$result = VideoInfo::model()->findAll($criteria);
Copier après la connexion
É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