icanboogie/ bind-activerecord
将ActiveRecord绑定到ICanBoogie
v5.0.0
2021-06-05 06:53 UTC
Requires
- php: >=7.2
- icanboogie/activerecord: ^5.0
- icanboogie/icanboogie: ^5.0
Requires (Dev)
- phpunit/phpunit: ^8.5
README
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
片段来配置连接和模型,这适合创建ConnectionCollection和ModelCollection实例。
以下示例演示了如何定义连接和模型。定义了两个连接: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进行持续测试。
行为准则
本项目遵守贡献者行为准则。通过参与本项目及其社区,你被期望遵守此准则。
贡献
请参阅CONTRIBUTING以获取详细信息。
许可
icanboogie/bind-activerecord在BSD-3-Clause下发布。