terabytesoft/active-record

Yii ActiveRecord 库

该软件包的官方仓库似乎已消失,因此该软件包已被冻结。

dev-main 2022-02-09 21:22 UTC

This package is auto-updated.

Last update: 2023-05-10 00:11:46 UTC


README

68747470733a2f2f796969736f66742e6769746875622e696f2f646f63732f696d616765732f7969695f6c6f676f2e737667

Yii ActiveRecord 库


该软件包提供 ActiveRecord 库。它用于 Yii 框架,但也可以单独使用。

Latest Stable Version Total Downloads Build status Code Coverage Mutation testing badge type-coverage

支持的数据库

软件包 PHP 版本 CI-Actions
[db-mssql] 7.4 - 8.0 2017 - 2019 Build status Mutation testing badge Code Coverage
[db-mysql] 7.4 - 8.0 5.7 - 8.0 Build status Mutation testing badge Code Coverage
[db-oracle] 7.4 - 8.0 11c - 12c Build status Mutation testing badge Code Coverage
[db-pgsql] 7.4 - 8.0 9.0 - 13.0 Build status Mutation testing badge Code Coverage
[db-sqlite] 7.4 - 8.0 3:latest Build status Mutation testing badge Code Coverage
[db-redis] 7.4 - 8.0 4.0 - 6.0 Build status Mutation testing badge Code Coverage

安装

该软件包可以通过 composer 安装

composer require yiisoft/active-record

注意:您必须安装实现仓库才能使用。

示例

composer require yiisoft/db-mysql

配置容器 DI 自动注入

web.php

<?php

declare(strict_types=1);

use Yiisoft\Db\Connection\ConnectionInterface;
use Yiisoft\Db\Sqlite\Connection as SqliteConnection;

/**
 * config ConnectionInterface::class
 */
return [
    ConnectionInterface::class => [
        'class' => SqliteConnection::class,
        '__construct()' => [
            'dsn' => $params['yiisoft/db-sqlite']['dsn'],
        ]
    ]
];

params.php

<?php

declare(strict_types=1);

return [
    'yiisoft/db-sqlite' => [
        'dsn' => 'sqlite:' . dirname(__DIR__) . '/runtime/yiitest.sq3',
    ]
]

定义您的活动记录,例如 User.php

<?php

declare(strict_types=1);

namespace App\Entity;

use Yiisoft\ActiveRecord\ActiveRecord;

/**
 * Entity User.
 *
 * Database fields:
 * @property int $id
 * @property string $username
 * @property string $email
 **/
final class User extends ActiveRecord
{
    public function tableName(): string
    {
        return '{{%user}}';
    }
}

在控制器或动作中

<?php

declare(strict_types=1);

namespace App\Action;

use App\Entity\User;
use Psr\Http\Message\ResponseInterface;

final class Register
{
    public function register(
        User $user
    ): ResponseInterface {
        /** Connected AR by di autowired. */
        $user->setAttribute('username', 'yiiliveext');
        $user->setAttribute('email', 'yiiliveext@mail.ru');
        $user->save();
    }
}

配置工厂 DI

web.php

<?php

declare(strict_types=1);

use Yiisoft\ActiveRecord\ActiveRecordFactory;
use Yiisoft\Db\Connection\ConnectionInterface;
use Yiisoft\Db\Sqlite\Connection as SqliteConnection;
use Yiisoft\Definitions\Reference;

/**
 * config SqliteConnection::class
 */
return [
    SqliteConnection::class => [
        'class' => SqliteConnection::class,
        '__construct()' => [
            'dsn' => $params['yiisoft/db-sqlite']['dsn'],
        ]
    ],

    ActiveRecordFactory::class => [
        'class' => ActiveRecordFactory::class,
        '__construct()' => [
            null,
            [ConnectionInterface::class => Reference::to(SqliteConnection::class)],
        ]
    ]
];

params.php

<?php

declare(strict_types=1);

return [
    'yiisoft/db-sqlite' => [
        'dsn' => 'sqlite:' . dirname(__DIR__) . '/runtime/yiitest.sq3',
    ]
]

定义您的活动记录,例如 User.php

<?php

declare(strict_types=1);

namespace App\Entity;

use Yiisoft\ActiveRecord\ActiveRecord;

/**
 * Entity User.
 *
 * Database fields:
 * @property int $id
 * @property string $username
 * @property string $email
 **/
final class User extends ActiveRecord
{
    public function tableName(): string
    {
        return '{{%user}}';
    }
}

在控制器或动作中

<?php

declare(strict_types=1);

namespace App\Action;

use App\Entity\User;
use Psr\Http\Message\ResponseInterface;
use Yiisoft\ActiveRecord\ActiveRecordFactory;

final class Register
{
    public function register(
        ActiveRecordFactory $arFactory
    ): ResponseInterface {
        /** Connected AR by factory di. */
        $user = $arFactory->createAR(User::class);

        $user->setAttribute('username', 'yiiliveext');
        $user->setAttribute('email', 'yiiliveext@mail.ru');
        $user->save();
    }
}

单元测试

该软件包使用 PHPUnit 进行测试。要运行测试

./vendor/bin/phpunit

变异测试

该软件包的测试使用 Infection 变异框架进行测试。要运行它

./vendor/bin/infection

静态分析

代码使用 Psalm 进行静态分析。要运行静态分析

./vendor/bin/psalm

支持项目

Open Collective

关注更新

Official website Twitter Telegram Facebook Slack

许可

Yii ActiveRecord 库是免费软件。它根据 BSD 许可证的条款发布。有关更多信息,请参阅 LICENSE

Yii 软件 维护。