ホームページ > PHPフレームワーク > Laravel > laravel接続ストアドプロシージャ

laravel接続ストアドプロシージャ

WBOY
リリース: 2023-05-26 14:13:09
オリジナル
738 人が閲覧しました

Laravel を使用した開発プロセスでは、特定のデータベース操作を実行するためにデータベース内のストアド プロシージャに接続する必要がある場合があります。この記事では、Laravel を使用してストアド プロシージャを接続する方法といくつかの考慮事項を紹介します。

  1. データベース接続の構成

まず、Laravel がデータベース上で対応する操作を実行できるように、config/database.php ファイルでデータベース接続を構成する必要があります。ファイル内で「mysql」接続構成を見つけて、パラメータを次のように変更します。

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'strict' => true,
    'engine' => null,
    'options' => array(
        PDO::ATTR_EMULATE_PREPARES => true,
    ),
],
ログイン後にコピー

その中で、データベース接続でカスタム ポート、ユーザー名、およびパスワードを使用する場合は、次のようにする必要があることに注意してください。 .env ファイル内で、次のように対応する構成を作成します。

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=mydatabase
DB_USERNAME=myusername
DB_PASSWORD=mypassword
ログイン後にコピー
  1. ストアド プロシージャの作成

ストアド プロシージャ接続を行う前に、ストアド プロシージャを作成する必要があります。データベース。 MySQL を例に挙げると、MySQL コマンド ラインまたはツールで、次のような SQL ステートメントを実行してストアド プロシージャを作成できます。

CREATE PROCEDURE my_procedure (IN id INT, IN name VARCHAR(255), OUT result INT)
BEGIN
    -- 在此处编写存储过程的具体代码
    -- 例如:将id和name插入到数据库表中,并将插入的数据的主键返回到result变量
    INSERT INTO my_table(id, name) VALUES (id, name);
    SET result = LAST_INSERT_ID();
END
ログイン後にコピー

ストアド プロシージャを作成するときは、次の点に注意する必要があります。次のとおりです:

  • procedure キーワード: ストアド プロシージャが作成されることを示します;
  • ストアド プロシージャ名: ここに my_procedure があります;
  • パラメータ リスト: ここには 3 つのパラメータがあります、つまり id、名前、結果;
  • ストアド プロシージャ コード: BEGIN キーワードと END キーワードの間にストアド プロシージャの特定のコードを記述します;
  • OUT 変数: 戻り値を表します。結果。

ストアド プロシージャ作成の具体的な実装は、実際のビジネス ニーズに応じて記述されています。

  1. ストアド プロシージャの接続

Laravel でストアド プロシージャを接続するには、DB クラスを使用する必要があります。次のコードを使用してストアド プロシージャに接続します。

$pdo = DB::connection()->getPdo();
$stmt = $pdo->prepare("CALL my_procedure(?, ?, @result)");
$stmt->bindParam(1, $id, PDO::PARAM_INT);
$stmt->bindParam(2, $name, PDO::PARAM_STR);
$stmt->execute();
$select = $pdo->query("SELECT @result AS result");
$result = $select->fetch(PDO::FETCH_ASSOC)['result'];
ログイン後にコピー

その中で注意する必要があるのは次のとおりです。

  • DB::connection() メソッドを使用してデータベースを取得します。接続;
  • getPdo() メソッドを通じて PDO オブジェクトを取得します;
  • prepare() メソッドを使用して、実行する SQL ステートメントを準備します (それぞれ「?、?、および @result」)ストアド プロシージャの 3 つのパラメーターに対応します。
  • bindParam() メソッドを使用して、変数 $id と $name を最初と 2 番目のパラメーターにバインドします。
  • execute() メソッドを呼び出します。ストアド プロシージャを実行する;
  • Use query() メソッドはクエリを実行します;
  • クエリ結果を $result 変数に保存します。

ストアド プロシージャで使用されるパラメータの数と種類は、Laravel でストアド プロシージャを実行するときに使用されるパラメータの数と種類と一致している必要があることに注意してください。不一致がある場合、接続ストアド プロシージャが失敗する可能性があります。

  1. 概要

以上は、ストアド プロシージャに接続するための具体的な手順と注意事項です。実際の開発およびデバッグのプロセスでは、指定されたデータベースの運用効果を達成するために、実際の状況に応じて対応する設定や変更を行う必要があります。この記事が、読者が Laravel を使用してストアド プロシージャを接続する際に役立つことを願っています。

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

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