3ie / laravel-storedprocedures
Requires
- php: >=5.4.0
- illuminate/support: 5.x
- twig/twig: >=1.6
This package is not auto-updated.
Last update: 2024-10-02 08:31:36 UTC
README
Laravel 存储过程
此包允许您使用 Laravel 5 与 PostgreSQL 存储过程一起工作。它允许您生成模型,以便在 PHP 代码中简单地使用您的存储过程。
安装
包安装
使用 Composer
在您的 composer.json 中添加以下依赖项以要求此包
"3ie/laravel-storedprocedures": "0.1.*"
然后使用 composer update
或 composer install
更新 composer。
使用 Laravel Bundle
如果您不想使用 Composer,可以通过输入以下命令使用 Laravel Bundle 安装它
php artisan bundle:install StoredProcedure
注册服务提供者
一旦安装了包,请将 ServiceProvider 添加到 app/config/app.php 中的 providers
数组中
'providers' => array( 'Mrblackus\LaravelStoredprocedures\LaravelStoredproceduresServiceProvider' );
使用方法
您可以通过输入以下命令为您的存储过程(即 函数)生成模型
php artisan generate-sp
只有以 sp_
开头的存储过程才会生成模型,其他将被忽略。 模型将写入 app/store_procedures 目录(或配置文件中定义的目录)。不要编辑这些模型! 它们将在下一次生成时被覆盖。
配置
您必须运行 vendor:publish 方法,将配置文件复制到您的 app 目录中
php artisan vendor:publish
您可以更改要读取的数据库架构以及写入存储过程模型的目录。您还可以修改用于 sp_models 的命名空间
return array( 'schema' => 'public', 'model_save_dir' => 'stored_procedures/', 'model_namespace' => 'App' );
模型
生成的模型有一个 execute()
方法,允许您执行存储过程并从中获取结果(如果过程返回一个)。
如果过程有 IN 或 INOUT 参数,则 execute()
方法将具有相同的参数,顺序相同。
如果它有 OUT 或 INOUT 参数,则模型将为每个 OUT 参数提供 getter/setter 属性。
设置器不会修改数据,它们仅存在,以便您可以在使用整个模型而不是简单变量的情况下格式化数据。
示例
给出以下存储过程,它检索给定用户 ID 的所有朋友...
CREATE OR REPLACE FUNCTION sp_getfriends(IN id integer, OUT id integer, OUT username character varying, OUT firstname character varying, OUT lastname character varying, OUT facebook_id character varying) RETURNS SETOF record AS $BODY$SELECT id, username, firstname, lastname, facebook_id FROM users LEFT JOIN friends ON users.id = friends.friend_with_id WHERE friends.user_id = $1$BODY$ LANGUAGE sql VOLATILE COST 100 ROWS 1000;
...我们将生成一个 SP_Getfriends
类。我们可以这样使用它
$userId = 20; $friends = SP_Getfriends::execute($userId); $firstFriend = $friends[0]; $friend->getId(); $friend->getUsername(); $friend->getFacebookid();