icanboogie/bind-activerecord
Binds ActiveRecord to ICanBoogie
Maintainers
Requires
- php: >=7.2
- icanboogie/activerecord: ^5.0
- icanboogie/icanboogie: ^5.0
Requires (Dev)
- phpunit/phpunit: ^8.5
Suggests
None
Provides
None
Conflicts
None
Replaces
None
BSD-3-Clause 25e999bbd650d0443f9d6f82ffdc0bc989c9253f
- Olivier Laviale <olivier.laviale.woop@gmail.com>
README
👁 Release
👁 Code Coverage
👁 Downloads
The icanboogie/bind-activerecord package binds the icanboogie/activerecord package to ICanBoogie, using its Autoconfig feature. It provides configuration builders for active record connections and models, as well as getters for the connection provider and the model provider.
<?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);
Installation
composer require icanboogie/bind-activerecord
Autoconfig
The package provides a configuration builder for ICanBoogie\ActiveRecord\Config.
The activerecord config fragment
Currently activerecord fragments are used to configure connections and models, which are suitable
to create ConnectionCollection and ModelCollection instances.
The following example demonstrates how to define connections and models. Two connections are
defined: primary is a connection to the MySQL server;cache is a connection to a SQLite database.
The nodes model is also defined.
<?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') );
Continuous Integration
The project is continuously tested by GitHub actions.
👁 Tests
👁 Static Analysis
👁 Code Style
Code of Conduct
This project adheres to a Contributor Code of Conduct. By participating in this project and its community, you're expected to uphold this code.
Contributing
See CONTRIBUTING for details.
