Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Entwicklungsframework Yii Framework-Tutorial (25) Database-Query Builder-Beispiel

PHP-Entwicklungsframework Yii Framework-Tutorial (25) Database-Query Builder-Beispiel

黄舟
黄舟Original
2017-01-22 09:23:581310Durchsuche

Im vorherigen Artikel wurde erläutert, wie PHP DAO (Database Access Object Interface) für den Zugriff auf die Datenbank verwendet. Für einige komplexe SQL-Anweisungen stellt Yii den Query Builder zur Verfügung Bietet eine objektorientierte Methode zum dynamischen Erstellen von SQL-Anweisungen. Die DAO-Schnittstelle von PHP und die DAO-Schnittstelle von .Net ähneln LINQ, obwohl sie über viele kleinere Funktionen verfügen. Für einige einfache SQL-Abfragen ist es normalerweise nicht erforderlich, auf den Query Builder zurückzugreifen, wie z. B. die Abfrage der Employee-Tabelle im vorherigen Artikel.

Im Vergleich zur direkten Verwendung von SQL-Anweisungen bietet die Verwendung von Query Builder folgende Vorteile:

Unterstützt die dynamische Erstellung komplexerer SQL-Abfragen durch Programme.

Fügen Sie automatisch Anführungszeichen zu den Tabellennamen und Listen in den erstellten SQL-Anweisungen hinzu, um Konflikte mit reservierten SQL-Bezeichnern zu vermeiden.

Geben Sie an, Anführungszeichen für Parameter hinzuzufügen und die Parameterbindung so weit wie möglich zu verwenden, um das Risiko einer SQL-Injection zu verringern.

Mit Query Builder werden keine SQL-Anweisungen direkt geschrieben, sondern es wird ein gewisser Grad an Datenbankabstraktion bereitgestellt, der den Wechsel von Datenbanktypen erleichtert.

In diesem Beispiel werden die beiden Tabellen „Customer“ und „Employee“ von Chinook abgefragt und die Kontaktinformationen aller von EmployeeId=4 verwalteten Kunden abgefragt.

Wenn Sie eine SQL-Abfrage verwenden, können Sie schreiben:

SELECT c.FirstName, c.LastName , c.Address,c.Email。
FROM customer c
INNER JOIN
employee e
ON c.SupportRepId=e.EmployeeId

WHERE e.EmployeeId=4 Dieses Beispiel verwendet Query Builder, um eine SQL-Abfrage zu erstellen und die indexAction-Methode von SiteController zu ändern:

public function actionIndex()
{
$model = array();
$connection=Yii::app()->db;
$command=$connection->createCommand()
->select('c.FirstName, c.LastName, c.Address,c.Email')
->from('customer c')
->join('employee e','c.SupportRepId=e.EmployeeId')
->where('e.EmployeeId=4');
$dataReader=$command->query();
// each $row is an array representing a row of data
foreach($dataReader as $row)
{
$customer= new DataModel();
$customer->firstName=$row['FirstName'];
$customer->lastName=$row['LastName'];
$customer->address=$row['Address'];
$customer->email=$row['Email'];
$model[]=$customer;
}
$this->render('index', array(
'model' => $model,
));
}

Sie können sehen, dass Query Builder auch CDbCommand verwendet und die folgenden Methoden zum Abfragen von Daten bereitstellt:

select()
selectDistinct()
from()
where()
join()
leftJoin()
rightJoin()
crossJoin()
naturalJoin()
group()
having()
order()
limit()
offset()
union()

Darüber hinaus können Sie die Datendefinitionsmethode sehen:

createTable()
renameTable()
dropTable()
truncateTable()
addColumn()
renameColumn()
alterColumn()
dropColumn()是
createIndex()
dropIndex()

Die von CDbCommand unterstützten Methoden entsprechen grundsätzlich eins zu eins den Schlüsselwörtern der SQL-Anweisung, es kommt also auf die persönlichen Vorlieben an, ohne dass Query Builder verwendet werden muss. Sie können SQL-Anweisungen direkt für einfaches SQL verwenden Anweisungen, und Sie können Query Builder für komplexere Abfragen verwenden.

Dieses Beispiel zeigt die Ergebnisse:

PHP-Entwicklungsframework Yii Framework-Tutorial (25) Database-Query Builder-Beispiel

Das Obige ist der Inhalt des PHP-Entwicklungsframeworks Yii Framework-Tutorial (25) Datenbank-Query Builder-Beispiel Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Stellungnahme:
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