PHP code example of sirix / cycle-orm-factory
1. Go to this page and download the library: Download sirix/cycle-orm-factory library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
sirix / cycle-orm-factory example snippets
declare(strict_types=1);
use Cycle\Database\Config;
use Cycle\ORM\Collection\ArrayCollectionFactory;
use Cycle\ORM\Mapper\Mapper;
use Cycle\ORM\Relation;
use Cycle\ORM\SchemaInterface;
return [
'cycle' => [
'db-config' => [
'default' => 'default',
'databases' => [
'default' => [
'connection' => 'mysql',
],
],
'connections' => [
'mysql' => new Config\MySQLDriverConfig(
connection: new Config\MySQL\TcpConnectionConfig(
database: 'cycle-orm',
host: '127.0.0.1',
port: 3306,
user: 'cycle',
password: 'password',
),
reconnect: true,
timezone: 'UTC',
queryCache: true,
),
],
],
'migrator' => [
'directory' => 'db/migrations',
'table' => 'migrations',
'seed_directory' => 'db/seeds',
'namespace' => 'App\\Migrations', // optional
'vendor_directories' => ['vendor/path'], // optional
'safe' => false, // optional
],
'entities' => [
'src/App/src/Entity',
],
'generators' => [
// 'my.custom.generator.service',
// \App\Cycle\Schema\Generator\MyCustomGenerator::class,
// new \App\Cycle\Schema\Generator\InlineGenerator(),
],
'collections' => [
'default' => ArrayCollectionFactory::class,
'factories' => [
// Register any Cycle ORM collection factory:
// 'doctrine' => \Cycle\ORM\Collection\DoctrineCollectionFactory::class,
// 'illuminate' => \Cycle\ORM\Collection\IlluminateCollectionFactory::class,
// 'loophp' => \Cycle\ORM\Collection\LoophpCollectionFactory::class,
],
],
'schema' => [
'cache' => [
'enabled' => true,
],
'compiled' => [
'path' => 'data/cache/cycle/schema.php',
],
'manual_mapping_schema_definitions' => [
'user' => [
SchemaInterface::ENTITY => User::class,
SchemaInterface::MAPPER => Mapper::class,
SchemaInterface::DATABASE => 'default',
SchemaInterface::TABLE => 'user',
SchemaInterface::PRIMARY_KEY => 'id',
SchemaInterface::COLUMNS => [
'id' => 'id',
'email' => 'email',
],
SchemaInterface::TYPECAST => [
'id' => 'int',
],
SchemaInterface::RELATIONS => [
'profile' => [
Relation::TYPE => Relation::HAS_ONE,
Relation::TARGET => 'profile',
Relation::SCHEMA => [
Relation::CASCADE => true,
Relation::INNER_KEY => 'id',
Relation::OUTER_KEY => 'user_id',
],
],
],
],
],
],
],
];
use Cycle\ORM\Collection\ArrayCollectionFactory;
use Cycle\ORM\Collection\DoctrineCollectionFactory;
use Cycle\ORM\Collection\IlluminateCollectionFactory;
use Cycle\ORM\Collection\LoophpCollectionFactory;
return [
'cycle' => [
'collections' => [
'default' => ArrayCollectionFactory::class,
'factories' => [
// Requires doctrine/collections.
'doctrine' => DoctrineCollectionFactory::class,
// Requires illuminate/collections.
'illuminate' => IlluminateCollectionFactory::class,
// Requires loophp/collection.
'loophp' => LoophpCollectionFactory::class,
],
],
],
];
return [
'cycle' => [
'collections' => [
'factories' => [
'custom' => App\Cycle\Collection\CustomCollectionFactory::class,
],
],
],
];
return [
'cycle' => [
'collections' => [
'factories' => [
'custom' => [
'factory' => App\Cycle\Collection\CustomCollectionFactory::class,
'interface' => App\Collection\BaseCollection::class,
],
],
],
],
];
use App\Entity\User;
use App\Repository\UserRepository;
use App\Repository\UserRepositoryInterface;
use Cycle\Annotated\Annotation\Entity;
use Sirix\Cycle\Factory\RepositoryFactory;
#[Entity(repository: UserRepository::class)]
final class User {}
return [
'dependencies' => [
'factories' => [
UserRepository::class => RepositoryFactory::class,
],
'aliases' => [
UserRepositoryInterface::class => UserRepository::class,
],
],
];
bash
php vendor/bin/laminas cycle:schema:compile
php vendor/bin/laminas cycle:schema:sync
php vendor/bin/laminas cycle:migration:create CreateUsers --database default