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 );
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', ));
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, ));
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'), ));
<🎜. >
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('v_id','title','big_class','sub_class','upload_time','comment_num'); $criteria -> condition = 'status = 1'; $criteria -> order = 'lastmodifytime desc'; $criteria -> limit = 3; $criteria ->params = array (':status' => $你的变量) ; $result = VideoInfo::model()->findAll($criteria);
$criteria -> condition = 'status = :status';
foreach ($result as $ob){ print_r($ob->attributes); }
$ob->attributes['title'];
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);
$result = VideoInfo::model()->findAll($criteria);