Praxis der YII2-Datenbankabfrage

PHP中文网
Freigeben: 2016-08-04 09:20:09
Original
1332 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich relevante Informationen zur YII2-Datenbankabfragepraxis vor. Freunde, die sie benötigen, können sich auf

Eine vorläufige Untersuchung des YII2-Frameworks, Ergänzungen, Löschungen und Änderungen beziehen , verwandte Abfragen usw. Einfaches Üben grundlegender Datenbankoperationen.

Datenbankkonfiguration.

/config/db.php Konfigurieren Sie die Datenbank

Während der Übung gibt es eine Testbibliothek – „Testtabelle –“ zwei Datensätze sind wie folgt

mysql> aus dem Test ;
---- -------
| 🎜> |. 2 |
---- --------
18 Zeilen im Satz (0,00 Sek.)


SQL-Abfragemethode

yii2 stellt die Originaldatenbank bereit Die Abfragemethode ist findBySql. Gleichzeitig wird die grundlegende SQL-Injection-Abwehr automatisch über Platzhalter durchgeführt. Obiger Code

// Die grundlegendste Abfragemethode

$sql = "select * from test where 1";

$res = Test::findBySql($sql)->all() ;

var_dump(count($res)); // res->2
// findbysql verhindert SQL-Injection
$id = '1 or 1=1';
$sql = "select * from test where id = " $id;
$res = Test : :findBySql($sql)->all();
var_dump(count($res)); // res->$sql = "select * from test where id = :id" ;
// Der Locator verhindert automatisch die SQL-Injektion
$res = Test::findBySql($sql,array(":id"=>$id))->all();
var_dump (count($res)); // res->1


activeRecord-Abfragemethode

Jedes Framework stellt zusätzlich zur ursprünglichen SQL-Methode eine entsprechende Kapselung bereit. Die Abfragemethode ist das gleiche wie yii2.

Modell erstellen

Die grundlegende Methode des Yii-Modells ist wie folgt. Der Code wird unten nicht im Detail beschrieben.

namespace appmodels;

use Yii;

use yiidbActiveRecord;

class Test erweitert ActiveRecord
{
// Optional, entsprechende Tabelle: If Der Standardklassenname stimmt mit dem Tabellennamen überein. Diese Funktion wird nicht benötigt.
public static function tableName()
{
return 'test';
}
// Optional, Validator: hauptsächlich verwendet Überprüfen Sie jedes Feld
public function Rules(){
return [
['id', 'integer'],
['name', 'string', 'length' => 0, 100]],
];
}
}


Sie müssen das Modell einführen, wenn Sie es verwenden

verwenden Sie appmodelsTest;

Vorgang hinzufügen

// Operation hinzufügen

$test = new Test();

$test->name = 'test';
// Gültigkeitsüberprüfung
$test->validate() ;
if($test->hasErrors()){
echo „Die Daten sind illegal“;
die;
}
$test->save();


Abfragevorgang

Abfragevorgang gehen Sie zuerst zum offiziellen Dokument

ActiveRecord-Dokument

wo Dokument

Es sollte betont werden : yii query bietet viele umfangreiche Bibliotheken, z. B. Batch-Abfrageverarbeitung im Code usw. Weitere Informationen finden Sie in der Dokumentation.

// select

// id = 1

$res = Test::find()->where(['id' => 1])->all() ;

var_dump(count($res)); //1

// id > 0
$res = Test::find()->where(['>','id ',0])->all();
var_dump(count($res)); //2
// id > =1 id <=2
$res = Test: :find()->where(['between','id',1,2])->all();
var_dump(count($res)); //2
// Namensfeld wie
$res = Test::find()->where(['like', 'name', 'cuihuan'])->all();
var_dump(count($res )); //2
// Abfrageverwendung obj->array
$res = Test::find()->where(['between','id',1,2]) - >asArray()->all();
var_dump($res[0]['id']); //2
// Batch-Abfrage, Batch-Abfrage für große Speicheroperationen
foreach (Test::find()->batch(1) as $test) {
var_dump(count($test));
}


Löschvorgang

// löschen

// Auswählen und löschen

$res = Test::find()->where(['id'=>1])->all();

$res[0] ->delete();

//Direkt löschen
var_dump(Test::deleteAll('id>:id', array(':id' => 2)));


Änderungsvorgänge

Zusätzlich zur Codemethode stellt yii2 direkt Aktualisierungsvorgänge bereit.

// Änderung des Aktivitätsdatensatzes

$res = Test::find()->where(['id'=>4])->one();

$res ->name = "update";

$res->save();



Verwandte Abfrageoperation

Zwei Tabellen im zugehörigen Abfragebeispiel:

Eine Schülertabelle (Student): ID, Name;

Eine Punktetabelle (Punktzahl): ID, stu_id, Punktezahl

// Alle Punkte der entsprechenden Schüler

$ stu = Student::find()->where(['name'=>'xiaozhuai'])->one();

var_dump($stu->id);

// Basic Get

$scores_1 = $stu->hasMany('appmodelScore',['stu_id'=>$stu->id])->asArray()->all();
$ scores_2 = $stu->hasMany(Score::className(),['stu_id'=>'id'])->asArray()->all();
var_dump($scores_1) ;
var_dump($scores_2);


Bei der Ausführung verwandter Operationen im Controller ist der Code zu verwirrend, sodass der Aufruf im Modell gekapselt ist.

Kapseln Sie zunächst die relevanten Assoziationsaufruffunktionen im Student-Modell

namespace appmodels;
verwenden Sie Yii;
verwenden Sie yiidbActiveRecord;
class Student erweitert ActiveRecord
{
public static function tableName()
{
return 'student';
}
// Punkteinformationen abrufen
public function getScores()
{
$scores = $this->hasMany(Score::className(), ['stu_id' => 'id'])->asArray()->all();
return $scores; }
}

, zwei Aufrufmethoden

// Aufruf nach Funktionskapselung

$scores = $stu->getScores() ;
var_dump($scores);
//Verwenden Sie die automatische Aufrufmethode von __get
$scores = $stu->scores;
var_dump($scores);

Abschließend

Das Obige sind einige grundlegende Vorgänge wie Hinzufügen, Löschen, Ändern, Abfragen und zugehörige Abfragen während der Bereitstellung und Verwendung von yii2.

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