PHP 開発フレームワーク Yii Framework チュートリアル (25) Database-Query Builder の例

黄舟
リリース: 2023-03-05 09:04:02
オリジナル
1311 人が閲覧しました

前の記事では、PHP が DAO (Database Access Object Interface) を使用してデータベースにアクセスする方法を紹介しましたが、DAO を使用するには、プログラマが SQL ステートメントを作成するのに役立つクエリ ビルダーが用意されています。 SQL ステートメントを動的に作成するためのオブジェクト指向のメソッド。不適切な比較をする場合、PHP の DAO と .Net の DAO インターフェイスは LINQ によく似ていますが、その機能は LINQ よりもはるかに小さいです。一部の単純な SQL クエリの場合は、通常、前の記事の Employee テーブルのクエリなど、クエリ ビルダーに頼る必要はありません。

SQL ステートメントを直接使用する場合と比較して、クエリ ビルダーの使用には次の利点があります:

プログラムを介したより複雑な SQL クエリの動的作成をサポートします。

SQL 予約識別子との競合を避けるために、作成された SQL ステートメント内のテーブル名とリストに引用符を自動的に追加します。

SQL インジェクションのリスクを軽減するために、パラメータに引用符の追加を指定し、パラメータ バインディングを可能な限り使用します。

クエリ ビルダーを使用すると、SQL ステートメントを直接作成しませんが、ある程度のデータベース抽象化が提供され、データベース タイプの切り替えが容易になります。

この例では、Chinook の 2 つのテーブル Customer と Employee をクエリし、EmployeeId=4 で管理されるすべての顧客の連絡先情報をクエリします。

SQL クエリを使用する場合は、次のように記述できます:

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 この例では、クエリ ビルダーを使用して SQL クエリを作成し、SiteController の IndexAction メソッドを変更します:

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,
));
}
ログイン後にコピー

クエリ ビルダーも同様であることがわかります。 CDbCommand が提供する CDbCommand を使用します データのクエリ方法は次のとおりです:

select()
selectDistinct()
from()
where()
join()
leftJoin()
rightJoin()
crossJoin()
naturalJoin()
group()
having()
order()
limit()
offset()
union()
ログイン後にコピー

さらに、データ定義方法:

createTable()
renameTable()
dropTable()
truncateTable()
addColumn()
renameColumn()
alterColumn()
dropColumn()是
createIndex()
dropIndex()
ログイン後にコピー

CDbCommand でサポートされているメソッドは、基本的に SQL ステートメントのキーワードに対応していることがわかります。単純な SQL ステートメントに対応するクエリ ビルダーは SQL ステートメントを直接使用でき、より複雑なクエリの場合はクエリ ビルダーを使用できます。

この例は結果を表示します:

PHP 開発フレームワーク Yii Framework チュートリアル (25) Database-Query Builder の例

上記は、PHP 開発フレームワーク Yii Framework チュートリアル (25) データベース - クエリ ビルダーの例の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www) に注意してください。 .php.cn)!

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート