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!