ホームページ > PHPフレームワーク > Laravel > laravelはストアドプロシージャを呼び出します

laravelはストアドプロシージャを呼び出します

PHPz
リリース: 2023-05-20 13:28:09
オリジナル
1032 人が閲覧しました

Laravel 開発では、ストアド プロシージャはデータベースの重要な部分であり、データベースの管理を改善し、クエリの効率を向上させ、コード ロジックとデータベース接続量の問題を軽減するのに役立ちます。この記事では、Laravel アプリケーションでストアド プロシージャを呼び出す方法について説明します。

1. ストアド プロシージャとは何ですか?

ストアド プロシージャは、データベースに保存され、再利用可能なプロシージャまたは関数として呼び出される、プリコンパイルされた SQL ステートメントのセットです。 SQL ステートメントとは異なり、ストアド プロシージャには制御ロジックと SQL ステートメントが含まれており、パラメーターを受け入れたり、複数の値を返したり、一時テーブルなどを操作したりすることもできます。ストアド プロシージャを使用すると、アプリケーションのパフォーマンスとセキュリティが向上し、アプリケーションの複雑さが簡素化され、データベースとアプリケーション間の往復通信が削減されます。

2. ストアド プロシージャを作成する

MySQL では、CREATE PROCEDURE ステートメントを使用してストアド プロシージャを作成する必要があります。構文は次のとおりです。 、procedure_nameはストアドプロシージャの名前であり、parameter_nameはパラメータ名を表し、data_typeはパラメータのデータ型を示し、lengthはデータ長を示します。パラメータには、入力パラメータを意味する IN (ストアド プロシージャの入力時にのみ使用可能)、出力パラメータを意味する OUT (ストアド プロシージャを通じてのみデータを取得できる)、および入力と出力の両方に使用できる INOUT があります。

例として、ユーザー情報を取得するストアド プロシージャ getUserInfo を作成すると、コードは次のようになります:

CREATE PROCEDURE procedure_name ([IN | OUT | INOUT] parameter_name data_type [(length)],...)
[SQL语句]
ログイン後にコピー

このストアド プロシージャを通じて、指定された ID のユーザー情報を取得できます。

3. ストアド プロシージャを呼び出す

Laravel では、DB ファサードを使用して、ストアド プロシージャを実行するメソッド DB::select を提供できます (例:

CREATE PROCEDURE getUserInfo(IN userId INT)
BEGIN
    SELECT * FROM users WHERE id = userId;
END
ログイン後にコピー
##)。 #ここで取得します ID 1 のユーザー情報を例として、作成された getUserInfo ストアド プロシージャが CALL ステートメントを通じて呼び出されます。呼び出しが成功すると、$result はユーザー情報を含むオブジェクトを返します。

パラメータを渡す必要がある場合は、次のようなプレースホルダを使用できます。

$result = DB::select("CALL getUserInfo(1)");
ログイン後にコピー

ここでのプレースホルダは疑問符で、2 番目のパラメータは配列の形式です。それに応じて疑問符に値を割り当てる必要があります。

一部のストアド プロシージャは結果セットを返す必要がある一方、更新または挿入操作のみを実行する必要があるストアド プロシージャもあることは注目に値します。たとえば、DB ファサードを通じて提供されるメソッド DB::statement は直接呼び出すことができます。 :

$result = DB::select("CALL getUserInfo(?)", [1]);
ログイン後にコピー

ここでは、updateUser ストアド プロシージャを呼び出して ID 1 のユーザー情報を更新しますが、結果セットは返されません。

4. ORM を使用してストアド プロシージャを呼び出す

DB ファサードを介してストアド プロシージャを呼び出すことに加えて、Laravel の ORM にはストアド プロシージャを呼び出すメソッドも提供されます。構文は次のとおりです:

DB::statement("CALL updateUser(1, 'John')");
ログイン後にコピー
ここで、 User はユーザー テーブルを表します。このメソッドは DB::select メソッドに似ており、パラメーターを渡して getUserInfo ストアド プロシージャを呼び出し、ハイドレート メソッドを通じて結果をモデルに保存します。

概要

Laravel には、ストアド プロシージャを呼び出すための便利なメソッドが用意されています。 DB ファサードと ORM を介して、CALL ステートメントを通じて作成されたストアド プロシージャを直接呼び出し、返された結果セットを取得したり、データを更新したりできます。ストアド プロシージャは、データベースの管理を改善し、アプリケーションのパフォーマンスとセキュリティを向上させ、アプリケーションの複雑さを簡素化するのに役立ちます。

以上がlaravelはストアドプロシージャを呼び出しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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