Informationen zur Yii-Modellabfrage basierend auf Array und Objekt

不言
Freigeben: 2023-04-01 10:00:01
Original
1537 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich die Modellabfragetechniken von Yii basierend auf Arrays und Objekten vor und analysiert die Modellabfragetechniken von Yii für Arrays und Objekte anhand von Beispielen im Detail.

Dieser Artikel beschreibt Yiis Modellieren Sie Abfragetechniken basierend auf Arrays und Objekten mit Beispielen. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Für einen Modellbeitrag gibt es die folgenden 4 Abfragemethoden, die Objekte oder Objektarrays zurückgeben.

//查找满足指定条件的结果中的第一行 find the first row satisfying the specified condition
$post=Post::model()->find($condition,$params);
//查找具有指定主键值的那一行 find the row with the specified primary key
$post=Post::model()->findByPk($postID,$condition,$params);
//查找具有指定属性值的行 find the row with the specified attribute values
$post=Post::model()->findByAttributes($attributes,$condition,$params);//未找到返回null
//通过指定的SQL 语句查找结果中的第一行 find the first row using the specified SQL statement
$post=Post::model()->findBySql($sql,$params);
Nach dem Login kopieren

Wenn die Suchmethode eine Zeile findet, die die Abfragebedingungen erfüllt, gibt sie eine Post-Instanz zurück, deren Attribute die Werte der entsprechenden Spalten in der Datentabellenzeile enthalten. Dann können wir den geladenen Wert genauso lesen wie die Eigenschaften eines normalen Objekts, beispielsweise echo $post->title;. Die Suchmethode gibt null zurück, wenn anhand der angegebenen Abfragekriterien nichts in der Datenbank gefunden wird.

Beim Aufruf von find verwenden wir $condition und $params, um die Abfragebedingungen anzugeben. Dabei kann $condition ein WHERE-String in der SQL-Anweisung sein und $params ist ein Array von Parametern, deren Werte an die Platzhalter in $condation gebunden werden sollen. Zum Beispiel: Angenommen, wir fragen die Daten mit postID = 10 ab

// find the row with postID=10
$post=Post::model()->find('postID=:postID', array(':postID'=>10));
Nach dem Login kopieren

Die Bedingung $condition ist der Where-Teil unserer SQL-Anweisung. Sie werden über Parameter übergeben, aber der Name wird mit „:“ hinzugefügt. ".

YII verfügt über eine CDbCriteria-Klasse zum Erstellen von Abfragen. Wenn wir einen Titel mit einer Post-ID von 10 abfragen, wird CdbCriteria wie folgt aufgebaut:

$criteria=new CDbCriteria;
$criteria->select='title'; // only select the 'title' column
$criteria->condition='postID=:postID';
$criteria->params=array(':postID'=>10);
$post=Post::model()->find($criteria); // $params is not needed
Nach dem Login kopieren

Eine Alternative zu CDbCriteria besteht darin, ein Array an zu übergeben Methode finden. Die Schlüssel und Werte des Arrays entsprechen jeweils den Attributnamen und Werten des Kriteriums. Das obige Beispiel kann wie folgt umgeschrieben werden:

$post=Post::model()->find(array(
  'select'=>'title',
  'condition'=>'postID=:postID',
  'params'=>array(':postID'=>10),
));
Nach dem Login kopieren

Gilt natürlich auch für findAll()

self::$_items[$type]=array();
$models=self::model()->findAll(array(
  'condition'=>'type=:type',
  'params'=>array(':type'=>$type),
  'order'=>'position',
));
Nach dem Login kopieren

wenn eine Abfragebedingung vorliegt. Wenn es darum geht, mehrere Spalten anhand bestimmter Werte abzugleichen, können wir findByAttributes() verwenden. Wir machen den Parameter $attributes zu einem Array von Werten, die nach Spaltennamen indiziert sind.
$attributes in findByAttributes ist der Name des Feldes. Wie kann abgefragt werden, ob der Titel abc ist? Siehe unten

Post::model()->findByAttributes(array('title'=>'abc'))
Nach dem Login kopieren

Andere Methoden:

1. $admin=Admin::model()->findAll($condition,$params);

Diese Methode dient zum Abfragen einer Sammlung basierend auf einer Bedingung, wie zum Beispiel:

findAll("username=:name",array(":name"=>$username));
Nach dem Login kopieren

2. $admin=Admin::model()->findAllByPk( $postIDs, $condition,$params);
findAllByPk($id,"name like ':name' and age=:age" ,array(':name'=>$name,'age' => $age));
Diese Methode dient der Abfrage einer Sammlung basierend auf dem Primärschlüssel, wie zum Beispiel:

findAllByPk(array(1,2));
Nach dem Login kopieren

3 ::model()->findAllByAttributes ($attributes,$condition,$params);

Diese Methode dient zum Abfragen einer Sammlung basierend auf Bedingungen, bei denen es sich um mehrere Bedingungen handeln kann ein Array, wie zum Beispiel:

findAllByAttributes(array('username'=>'admin'));
Nach dem Login kopieren

4. $admin=Admin::model()->findAllBySql($sql,$params);

Diese Methode besteht darin, ein Array basierend auf der SQL-Anweisung abzufragen, wie zum Beispiel:

findAllBySql("select *from admin where username=:name",array(':name'=>'admin'));
Nach dem Login kopieren

2 Methode zum Abfragen von Objekten

1. model()->findByPk($postID,$condition,$ params);

Fragen Sie ein Objekt basierend auf dem Primärschlüssel ab, wie zum Beispiel:

findByPk(1);
Nach dem Login kopieren

2 . $row=Admin::model()->find($condition, $params);

Fragen Sie einen Datensatz basierend auf einer Bedingung ab. Es können mehrere vorhanden sein, es werden jedoch nur Ergebnisse zurückgegeben die erste Datenzeile, wie zum Beispiel:

find('username=:name',array(':name'=>'admin'));
Nach dem Login kopieren

3. $admin=Admin::model()->findByAttributes($attributes,$condition,$params);

Diese Methode dient zum Abfragen eines Datensatzes basierend auf Bedingungen, bei denen es sich um mehrere Bedingungen handeln kann. Die Bedingungen werden in das Array eingefügt und das erste Datenelement wird ebenfalls abgefragt, z. B.:

findByAttributes(array('username'=>'admin'));
Nach dem Login kopieren

4. $admin=Admin::model()->findBySql($sql,$params);

Diese Methode dient der Abfrage eines Datensatzes basierend auf der SQL-Anweisung , und es fragt auch das erste Datenelement ab, wie zum Beispiel:

findBySql("select *from admin where username=:name",array(':name'=>'admin'));
Nach dem Login kopieren

5. Stellen Sie eine Methode zum Abrufen von SQL zusammen und fragen Sie ein Objekt basierend auf find

$criteria=new CDbCriteria;
$criteria->select='username'; // only select the 'title' column
$criteria->condition='username=:username';
$criteria->params=array(':username=>'admin');
$post=Post::model()->find($criteria); // $params is not needed
Nach dem Login kopieren
<🎜 ab >

3. Fragen Sie die Nummer ab und ermitteln Sie, ob die Abfrage Ergebnisse liefert

1. ;

Diese Methode besteht darin, basierend auf einer Bedingung abzufragen, wie viele Datensätze eine Sammlung hat, und eine int-Zahl zurückzugeben, z. B.

count("username=:name",array(":name"=>$username));
Nach dem Login kopieren

2 $n=Post: :model()->countBySql($sql,$params);

Diese Methode dient dazu, basierend auf der SQL-Anweisung „Record“ abzufragen, wie viele Elemente sich in einer Sammlung befinden, und eine int-Typnummer zurückzugeben , wie zum Beispiel

countBySql("select *from admin where username=:name",array(&#39;:name&#39;=>&#39;admin&#39;));
Nach dem Login kopieren

3 $exists=Post::model()->exists($condition,$params);
Diese Methode Es basiert auf einer Bedingung Abfrage, ob das erhaltene Array Daten enthält, andernfalls wird es nicht gefunden. 5. Änderungsmethoden

1. ->updateAll($attributes,$condition,$params);

$admin=new Admin;
$admin->username=$username;
$admin->password=$password;
if($admin->save()>0){
  echo "添加成功";
}else{
  echo "添加失败";
}
Nach dem Login kopieren

2. Post::model()->updateByPk($pk,$attributes,$condition, $params);

$count = Admin::model()->updateByPk(1,array(&#39;username&#39;=>&#39;admin&#39;,&#39;password&#39;=>&#39;admin&#39;));
$count = Admin::model()->updateByPk(array(1,2),array(&#39;username&#39;=>&#39;admin&#39;,&#39;password&#39;=>&#39;admin&#39;),&#39;username=:name&#39;,array(&#39;:name&#39;=>&#39;admin&#39;));
if($count>0){
  echo "修改成功";
}else{
  echo "修改失败";
}
Nach dem Login kopieren

$pk代表主键,可以是一个也可以是一个集合,$attributes代表是要修改的字段的集合,$condition代表条件,$params传入的值

3、Post::model()->updateCounters($counters,$condition,$params);

$count =Admin::model()->updateCounters(array(&#39;status&#39;=>1),&#39;username=:name&#39;,array(&#39;:name&#39;=>&#39;admin&#39;));
if($count>0){
  echo "修改成功";
}else{
  echo "修改失败";
}
Nach dem Login kopieren

array('status'=>1)代表数据库中的admin表根据条件username='admin',查询出的所有结果status字段都自加1

六、删除的方法

1、Post::model()->deleteAll($condition,$params);

$count = Admin::model()->deleteAll(&#39;username=:name and password=:pass&#39;,array(&#39;:name&#39;=>&#39;admin&#39;,&#39;:pass&#39;=>&#39;admin&#39;));
      $id=1,2,3
      deleteAll(&#39;id in(".$id.")&#39;);删除id为这些的数据
if($count>0){
  echo "删除成功";
}else{
  echo "删除失败";
}
Nach dem Login kopieren

2、Post::model()->deleteByPk($pk,$condition,$params);

$count = Admin::model()->deleteByPk(1);
$count = Admin::model()->deleteByPk(array(1,2),&#39;username=:name&#39;,array(&#39;:name&#39;=>&#39;admin&#39;));
if($count>0){
  echo "删除成功";
}else{
  echo "删除失败";
}
Nach dem Login kopieren

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

关于Yii Framework框架获取分类下面的所有子类的方法

如何通过Yii框架使用魔术方法实现跨文件调用的功能  

Das obige ist der detaillierte Inhalt vonInformationen zur Yii-Modellabfrage basierend auf Array und Objekt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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