icanboogie/bind-activerecord

将ActiveRecord绑定到ICanBoogie

v5.0.0 2021-06-05 06:53 UTC

This package is auto-updated.

Last update: 2024-08-30 01:43:43 UTC


README

Packagist Code Quality Code Coverage Downloads

icanboogie/bind-activerecord软件包将icanboogie/activerecord软件包绑定到ICanBoogie,使用其Autoconfig特性。它提供了活动记录连接和模型的配置构建器,以及连接提供者和模型提供者的获取器。

<?php
namespace ICanBoogie\Binding\ActiveRecord;

use ICanBoogie\Application;
use ICanBoogie\ActiveRecord\Config;
use ICanBoogie\ActiveRecord\Model;
use ICanBoogie\ActiveRecord\ConnectionProvider;
use ICanBoogie\ActiveRecord\ModelProvider;

/* @var Application $app */

$app = boot();

$config = $app->configs[Config::class];

echo count($config->connections);
echo count($config->models);

$primary_connection = $app->service_for_id('active_record.connection.primary', Connection::class);
# or
$primary_connection = $app->service_for_class(ConnectionProvider::class)->connection_for_id('primary');

$nodes = $app->service_for_class(ModelProvider::class)->model_for_record(Node::class);

安装

composer require icanboogie/bind-activerecord

Autoconfig

该软件包提供了一个配置构建器用于ICanBoogie\ActiveRecord\Config

activerecord配置片段

目前使用activerecord片段来配置连接和模型,这适合创建ConnectionCollectionModelCollection实例。

以下示例演示了如何定义连接和模型。定义了两个连接:primary是连接到MySQL服务器;cache是连接到SQLite数据库。还定义了nodes模型。

<?php

// config/activerecord.php

use ICanBoogie\ActiveRecord\ConnectionOptions;
use ICanBoogie\ActiveRecord\Model;
use ICanBoogie\ActiveRecord\Schema;
use ICanBoogie\ActiveRecord\SchemaColumn;
use ICanBoogie\ActiveRecord\Config;
use ICanBoogie\ActiveRecord\ConfigBuilder;
use ICanBoogie\ActiveRecord\SchemaBuilder;

return fn(ConfigBuilder $config) => $config
    ->add_connection(
        id: Config::DEFAULT_CONNECTION_ID,
        dsn: 'mysql:dbname=mydatabase',
        username: 'root',
        password: 'root',
        table_name_prefix: 'myprefix',
        time_zone: '+02:00',
    )
    ->add_connection(
        id: 'cache',
        dsn: 'sqlite:' . ICanBoogie\REPOSITORY . 'cache.sqlite'
    )
    ->add_model(
        id: 'nodes',
        activerecord_class: Node::class,
        schema_builder: fn(SchemaBuilder $b) => $b
            ->add_serial('id',primary: true)
            ->add_varchar('title')
    );

持续集成

项目通过GitHub actions进行持续测试。

Tests Static Analysis Code Style

行为准则

本项目遵守贡献者行为准则。通过参与本项目及其社区,你被期望遵守此准则。

贡献

请参阅CONTRIBUTING以获取详细信息。

许可

icanboogie/bind-activerecordBSD-3-Clause下发布。