julfiker/laravel-sqlsrv

Laravel - SQL Server 连接和存储过程执行及其他

v1.6 2023-02-14 06:51 UTC

This package is auto-updated.

Last update: 2024-09-24 06:40:54 UTC


README

在安装前,请确保已安装 sqlsrv 和 pdo_sqlsrv for php
SQLSRV 数据库驱动程序用于 Laravel
需要 Microsoft 驱动程序才能在 PHP 应用程序中启用 SQL Server

通过 composer 安装包

 composer require julfiker/laravel-sqlsrv

安装后
将服务配置到应用中,请在 config/app.php 中的 providers 下添加以下内容
Julfiker\SqlSrv\SqlSrvServiceProvider::class

在 Laravel 应用程序中使用说明以执行存储过程

       $status_code = sprintf("%4000s", "");
       $status_message = sprintf("%4000s", "");
       $params = [
            "p_user_id" => 1, //OUTPUT parameter
            "o_status_code" => &$status_code, //OUT parameter
            "o_status_message" => &$status_message, // OUT parameter
        ];
       /** @var PDOStatement $sth */
       $sth = DB::executeProcedure('{SCHEMA_NAME}.{PROCEDURE_NAME}', $params);

       // If you have return sql statement from procedure you can use statement object $sth fetching data like as below
       $result = $sth->fetchAll();
       print_r($result);
       

您可以根据需要使用输出参数,这些参数将从存储过程端绑定。

您还可以在参数中定义参数类型和长度,例如

     $params = [
            "p_user_id" => ['value' => 1, 'length' => 400,'type' => PDO::PARAM_INPUT_OUTPUT] //OUTPUT parameter
     ];
     
     //Note: If you want to assign base64 content with the procedure param then you can keep null into the type and length, otherwise you might got error.

设置数据库日志的说明。

  • 在数据库中创建一个表
create table ACCESS_LOG
            (
                ACTION_NAME   nvarchar(max),
                MODEL_NAME    nvarchar(max),
                PROCE_NAME    nvarchar(max),
                PARAMS_DATA   nvarchar(max),
                RESPONSE_DATA nvarchar(max),
                CREATED_AT    datetime,
                UPDATED_AT    datetime,
                CREATED_BY    bigint,
                UPDATED_BY    bigint,
                ROW_ID        varchar(max)
            ) 
  • 在 \config\logging.php 的第 37-43 行添加通道
  'channels' => [
         'auditLog' => [
             'driver' => 'custom',
             'handler' => App\AuditLog\LogHandler::class,
             'via' => App\AuditLog\LogSetter::class,
             'level' => 'debug',
         ],
  • 将 'AuditLog' 目录复制到 \app,路径为 \app\AuditLog

需要帮助吗?

您可以通过以下方式联系我
电子邮件: mail.julfiker@gmail.com
skype: eng.jewel

欢迎您为其进一步的改进/更新或扩展可用性做出贡献。只需发起一个 pull request。

谢谢