corephp/slim-eloquent

eloquent数据库的包装依赖

0.0.2.0 2019-03-05 04:29 UTC

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连接时,parseConnectionparseGeneral函数生成如下所示的配置数组。

$options = [
    'driver'    => 'mysql|pgsql|sqlite',
    'host'      => 'host',
    'port'      => 3306,
    'database'  => 'database',
    'username'  => 'user',
    'password'  => 'pass',
    'charset'   => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
];

当传递SQLite连接时,parseConnectionparseSqlite函数生成如下所示的配置数组。

$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 ]
//    ]
// ]