Vergleich der Methoden zum Suchen bestimmter Felder mithilfe von find findAll im Yii-Framework

高洛峰
Freigeben: 2023-03-05 13:30:02
Original
1258 Leute haben es durchsucht

Wie wir alle wissen

modelName::model() -> //Was gefunden wird, ist ein Objekt
modelName::model() -> Was gefunden wird Es ist ein Array von Objektsammlungen
So finde ich die Daten der Felder, die ich benötige, nicht die Daten aller Felder

Das habe ich schon einmal gemacht

$criteria = new CDbCriteria;
$criteria->select = 'username,id,email';
$criteria->order = 'id DESC';
$users = modelName::model()->findAll( $criteria );
Nach dem Login kopieren

Ich habe zufällig gesehen, wie jemand anderes im Hintergrund so etwas schrieb, und mir wurde klar, wie unwissend ich war

$users = modelName::model()->findAll(array(
  'select' =>array('username','id','email'),
  'order' => 'id DESC',
));
Nach dem Login kopieren

Nachdem ich es getestet hatte, stellte ich fest, dass es funktioniert, also find kann dies auch tun

$user = modelName::model()->find(array(
  'select' =>array('username','id','email'),
  'order' => 'id DESC',
  'condition' => 'id='.$id,
));
Nach dem Login kopieren

Natürlich ist es definitiv nicht sicher, dies zu tun

$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'),
));
Nach dem Login kopieren

Verwenden Sie ebenfalls findAll zum Testen. Schlussfolgerung

Mit dieser Methode können Sie die erforderlichen Daten natürlich problemlos abrufen, wenn eine Paginierung erforderlich ist, sind für die folgenden CDb-Kriterien weiterhin neue Daten erforderlich

Zum Beispiel möchte ich die Daten in den Videoinfo-Tabellen „v_id“, „title“, „big_class“, „sub_class“, „upload_time“, „comment_num“ und anderen Feldern herausnehmen und die Bedingung ist status=1, folgen lastmodifytime in umgekehrter Reihenfolge, und nehmen Sie nur 3 heraus, tun Sie dies:

$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);
Nach dem Login kopieren

Die von mir auskommentierte Zeile kann zum Übergeben von Variablen verwendet werden, die beispielsweise durch Platzhalter dargestellt werden Der Status muss anhand der Variablen bedingt zugewiesen werden. Sie können die Zeilenzuweisung auskommentieren und die Bedingung dann als

$criteria -> condition = 'status = :status';
Nach dem Login kopieren

schreiben Die Ergebnisvariable ist das Ergebnis, das Sie erhalten. Es handelt sich um eine Liste von Objekten, die durchlaufen werden müssen:

foreach ($result as $ob){
      print_r($ob->attributes);
 }
Nach dem Login kopieren

Wenn Sie beispielsweise jedes Feld anzeigen möchten, geben Sie einfach <🎜 ein >

$ob->attributes[&#39;title&#39;];
Nach dem Login kopieren

usw.

Schließlich kann die CPagination-Klasse zusammen mit der CDbCriteria-Klasse und dem Front-End-Paging-Plug-in zur Unterstützung von Paging verwendet werden:

$count =VideoInfo::model()->count($criteria)
 
$pages=new CPagination($count);   
$pages->pageSize=30; //每页分多少条
$pages->applyLimit($criteria);
Nach dem Login kopieren
$result = VideoInfo::model()->findAll($criteria);
Nach dem Login kopieren

Mehr find findAll im Yii-Framework Bitte beachten Sie die chinesische PHP-Website für verwandte Artikel zum Herausfinden der angegebenen Felder!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage