corephp / slim-eloquent
eloquent数据库的包装依赖
0.0.2.0
2019-03-05 04:29 UTC
Requires
- illuminate/database: ^5.6
Requires (Dev)
- phpunit/phpunit: >=4.8 < 6.0
- squizlabs/php_codesniffer: ^3.3
This package is auto-updated.
Last update: 2024-09-14 11:09:17 UTC
README
这是Eloquent ORM的简单包装,用于Slim 3。它提供了一个解析器类,可以从PostgreSQL、MySQL或SQLite数据库的标准数据库URL生成连接选项。
依赖项
安装
您可以使用slimcmd工具安装此依赖项
slimcmd dependency:add eloquent
或者您可以手动设置
composer require corephp/slim-eloquent
允许的数据库URL
允许的数据库连接格式有
MySQL
mysql://user:password@host:post/database
PostgreSQL
postgres://user:password@host:post/database
SQLite
sqlite://pato/to.database
使用解析器类
解析器类提供了3种方法来为Eloquent生成连接选项
- parseConnection:解析MySQL、PostgreSQL和SQLite的连接字符串。
- parseGeneral:仅解析MySQL和PostgreSQL的连接。
- parseSqlite:仅解析SQLite的连接。
当传递PostgreSQL或MySQL连接时,parseConnection
和parseGeneral
函数生成如下所示的配置数组。
$options = [ 'driver' => 'mysql|pgsql|sqlite', 'host' => 'host', 'port' => 3306, 'database' => 'database', 'username' => 'user', 'password' => 'pass', 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', ];
当传递SQLite连接时,parseConnection
和parseSqlite
函数生成如下所示的配置数组。
$options = [ 'driver' => 'sqlite', 'database' => '/path/to.database', 'foreign_key_constraints' => true, 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', ];
示例
use CorePHP\Slim\Dependency\Database\Parser; $settings = [ // ... "database" => Parser::parseConnection( getenv('DATABASE_URL') ) // ... ];
Eloquent包装器
此类允许您创建主要连接,作为Slim的依赖项嵌入。您可以使用以下代码在依赖项部分生成database.php
文件
use CorePHP\Slim\Dependency\Database\Eloquent; return function ($container) { $settings = $container->get('eloquent'); $eloquent = new Eloquent(); $eloquent->addConnection($settings); return $eloquent->getManager(); };
这生成了主要连接并启动Eloquent以使用模型。您还可以为不同数据库设置读取和写入配置。
use CorePHP\Slim\Dependency\Database\Eloquent; return function ($container) { $eloquent = new Eloquent(); $eloquent->addConnection($container['database'], 'default', 'r'); // read $eloquent->addConnection($container['database2'], 'default', 'w'); // write return $eloquent->getManager(); }
基本模型类
此软件包提供了一个预定义的基本模型类,它为您带来了所需的最基本的模型配置,您可以使用它如下
use CorePHP\Slim\Dependency\Database\Model; class User extends Model { protected $table = 'users'; }
模型类有2个预配置的函数
- getDateFormat:日期格式定义为'Y-m-d H:i:s'。
- scopePagination:可以将此作用域添加到查询过滤器链的末尾,以生成单个查询的分区。此作用域有3个参数:$limit、$page和$links,顺序如下。
$limit
:每页将检索的元素数量。$page
:要检索的页码。如果您设置一个小于1的数字,您将始终有第1页,如果您设置一个大于页码总数的数字,您将始终有最后一个可能的页码。$links
:这是一个布尔参数,如果您将其设置为true,则会在结果数组中生成一个名为links的额外键,该键将具有如下所示的分区数组:[1, 2, 3, 4, 5, 6, '...', 100]。这可以帮助您为数据表生成自定义分页。
分页示例
$items = User::where('name', 'like', '%Jhon%') ->pagination(10, 1, true); // The content of items variable will be: // // [ // "data" => [ ... ] // "pages" => [ // "limit" => 10, // "pages" => 100 /* depending of the total elemtns */ // "total" => 1000 /* total elemtns of the query */ // "page" => 1, // "links" => [ 1, 2, 3, 4, 5, 6, '...', 100 ] // ] // ]