


Informationen zur Yii-Modellabfrage basierend auf Array und Objekt
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);
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));
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
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), ));
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', ));
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'))
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));
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));
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'));
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'));
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);
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'));
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'));
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'));
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
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));
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 BeispielcountBySql("select *from admin where username=:name",array(':name'=>'admin'));
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 "添加失败"; }
2. Post::model()->updateByPk($pk,$attributes,$condition, $params);
$count = Admin::model()->updateByPk(1,array('username'=>'admin','password'=>'admin')); $count = Admin::model()->updateByPk(array(1,2),array('username'=>'admin','password'=>'admin'),'username=:name',array(':name'=>'admin')); if($count>0){ echo "修改成功"; }else{ echo "修改失败"; }
$pk代表主键,可以是一个也可以是一个集合,$attributes代表是要修改的字段的集合,$condition代表条件,$params传入的值
3、Post::model()->updateCounters($counters,$condition,$params);
$count =Admin::model()->updateCounters(array('status'=>1),'username=:name',array(':name'=>'admin')); if($count>0){ echo "修改成功"; }else{ echo "修改失败"; }
array('status'=>1)代表数据库中的admin表根据条件username='admin',查询出的所有结果status字段都自加1
六、删除的方法
1、Post::model()->deleteAll($condition,$params);
$count = Admin::model()->deleteAll('username=:name and password=:pass',array(':name'=>'admin',':pass'=>'admin')); $id=1,2,3 deleteAll('id in(".$id.")');删除id为这些的数据 if($count>0){ echo "删除成功"; }else{ echo "删除失败"; }
2、Post::model()->deleteByPk($pk,$condition,$params);
$count = Admin::model()->deleteByPk(1); $count = Admin::model()->deleteByPk(array(1,2),'username=:name',array(':name'=>'admin')); if($count>0){ echo "删除成功"; }else{ echo "删除失败"; }
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
关于Yii Framework框架获取分类下面的所有子类的方法
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Die Methode zur Verwendung einer foreach-Schleife zum Entfernen doppelter Elemente aus einem PHP-Array ist wie folgt: Durchlaufen Sie das Array und löschen Sie es, wenn das Element bereits vorhanden ist und die aktuelle Position nicht das erste Vorkommen ist. Wenn beispielsweise in den Datenbankabfrageergebnissen doppelte Datensätze vorhanden sind, können Sie diese Methode verwenden, um diese zu entfernen und Ergebnisse ohne doppelte Datensätze zu erhalten.

Zu den Methoden zum tiefen Kopieren von Arrays in PHP gehören: JSON-Kodierung und -Dekodierung mit json_decode und json_encode. Verwenden Sie array_map und clone, um tiefe Kopien von Schlüsseln und Werten zu erstellen. Verwenden Sie Serialize und Deserialize für die Serialisierung und Deserialisierung.

Der Leistungsvergleich der PHP-Methoden zum Umdrehen von Array-Schlüsselwerten zeigt, dass die Funktion array_flip() in großen Arrays (mehr als 1 Million Elemente) eine bessere Leistung als die for-Schleife erbringt und weniger Zeit benötigt. Die for-Schleifenmethode zum manuellen Umdrehen von Schlüsselwerten dauert relativ lange.

So konvertieren Sie ein MySQL-Abfrageergebnis-Array in ein Objekt: Erstellen Sie ein leeres Objekt-Array. Durchlaufen Sie das resultierende Array und erstellen Sie für jede Zeile ein neues Objekt. Verwenden Sie eine foreach-Schleife, um die Schlüssel-Wert-Paare jeder Zeile den entsprechenden Eigenschaften des neuen Objekts zuzuweisen. Fügt dem Objektarray ein neues Objekt hinzu. Schließen Sie die Datenbankverbindung.

Die beste Vorgehensweise zum Durchführen einer Array-Deep-Kopie in PHP besteht darin, json_decode(json_encode($arr)) zu verwenden, um das Array in einen JSON-String zu konvertieren und ihn dann wieder in ein Array umzuwandeln. Verwenden Sie unserialize(serialize($arr)), um das Array in eine Zeichenfolge zu serialisieren und es dann in ein neues Array zu deserialisieren. Verwenden Sie den RecursiveIteratorIterator, um mehrdimensionale Arrays rekursiv zu durchlaufen.

Die PHP-Funktion array_group_by kann Elemente in einem Array basierend auf Schlüsseln oder Abschlussfunktionen gruppieren und ein assoziatives Array zurückgeben, wobei der Schlüssel der Gruppenname und der Wert ein Array von Elementen ist, die zur Gruppe gehören.

Die mehrdimensionale Array-Sortierung kann in Einzelspaltensortierung und verschachtelte Sortierung unterteilt werden. Bei der Einzelspaltensortierung kann die Funktion array_multisort() zum Sortieren nach Spalten verwendet werden. Bei der verschachtelten Sortierung ist eine rekursive Funktion erforderlich, um das Array zu durchlaufen und zu sortieren. Zu den praktischen Beispielen gehören die Sortierung nach Produktname und die Sortierung von Verbindungen nach Verkaufsmenge und Preis.

In PHP ist ein Array eine geordnete Sequenz, und auf Elemente wird über einen Index zugegriffen. Ein Objekt ist eine Entität mit Eigenschaften und Methoden, die über das Schlüsselwort new erstellt werden. Der Array-Zugriff erfolgt über einen Index, der Objektzugriff über Eigenschaften/Methoden. Es werden Array-Werte und Objektreferenzen übergeben.
