A drop-in Doctrine ORM 2 implementation for Laravel 5+ and Lumen

Overview

Laravel Doctrine ORM

GitHub release Github actions StyleCI Scrutinizer Packagist Packagist

A drop-in Doctrine ORM 2 implementation for Laravel 5+

$scientist = new Scientist(
    'Albert',
    'Einstein'
);

$scientist->addTheory(
    new Theory('Theory of relativity')
);

EntityManager::persist($scientist);
EntityManager::flush();
  • Easy configuration
  • Pagination
  • Pre-configured metadata, connections and caching
  • Extendable: extend or add your own drivers for metadata, connections or cache
  • Fluent, Annotations, YAML, SimplifiedYAML, XML, SimplifiedXML, Config and Static PHP metadata mappings
  • Multiple entity managers and connections
  • Laravel naming strategy
  • Simple authentication implementation
  • Password reminders implementation
  • Doctrine console commands
  • DoctrineExtensions supported
  • Timestamps, Softdeletes and TablePrefix listeners

Documentation

Read the full documentation.

Versions

Version Supported Laravel Versions
~1.5 6.x
~1.6 7.x
~1.7 8.x

Require this package

composer require laravel-doctrine/orm doctrine/inflector:"^1.4|^2.0"

Because of the auto package discovery feature Laravel has, the ServiceProvider and Facades are automatically registered.

To publish the config use:

php artisan vendor:publish --tag="config" --provider="LaravelDoctrine\ORM\DoctrineServiceProvider"

License

This package is licensed under the MIT license.

Comments
  • [request] integration with laravel passport

    [request] integration with laravel passport

    The title says it all. We need a replacement for the Laravel\Passport\HasApiTokens trait for example.

    edit

    or would this better fit in the extensions repo?

    feature help wanted 
    opened by Evertt 64
  • Illuminate\Cache is not compatible with Lumen

    Illuminate\Cache is not compatible with Lumen

    I'm getting this error since 1.0.10

    [Illuminate\Contracts\Container\BindingResolutionException]
      Unresolvable dependency resolving [Parameter #0 [ <required> $app ]] in class Illuminate\Cache\CacheManager
    

    It seems that Illuminate\Cache\CacheManager has a dependency with Illuminate\Foundation\Application that does not exist in lumen (it's Laravel\Lumen\Application). I think that illuminate/cache package is not compatible with Lumen

    question 
    opened by MarcFRICOU 30
  • [1.0] Resolve target entity Listener

    [1.0] Resolve target entity Listener

    Hi, I need to relate 2 different type of contacts with a message

    Acme\Entity\Message:
      oneToOne:
        from:
          targetEntity: Acme\Entity\ParticipantInterface
    --------------
    class Message {
    
       private $from;
       private $to;
    
       __ public function __construct(ParticipantInterface $from, ParticipantInterface $to)
       {
          $this->from = $from;
          $this->to = $to;
       }
    }
    
    class Hotel implements PartecipantInterface
    {
        private $name;
        ...
    }
    
    class Contact implements PartecipantInterface
    {
        private $name;
        ...
    }
    

    Message::from and Message::to can be either Hotel or Contact. I thought of this:

    Message:
    id | from | to
    1  |    5   | 6
    ---------------------------------
    Partecipant:
    id | message_id
    5  |    1
    6  |    1
    ---------------------------------
    HotelPartecipant:
    id | id_partecipant | id_hotel
    1  | 5                     |  100
    ---------------------------------
    ContactPartecipant:
    id | id_contact | id_contact
    1  | 6               | 50
    

    I was hoping to use this tecnique: https://www.doctrine-project.org/projects/doctrine-orm/en/latest/cookbook/resolve-target-entity-listener.html

    but doesn't work

    question 
    opened by matiux 22
  • [BUG] [QUESTION] Laravel Scheduler not able to find database connection

    [BUG] [QUESTION] Laravel Scheduler not able to find database connection

    Please prefix your issue with one of the following: [BUG] [PROPOSAL] [QUESTION].

    class Kernel extends ConsoleKernel
    {
        /**
         * The Artisan commands provided by your application.
         *
         * @var array
         */
        protected $commands = [
            'App\Console\Commands\Start',
        ];
    
        /**
         * Define the application's command schedule.
         *
         * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
         * @return void
         */
        protected function schedule(Schedule $schedule)
        {
            $schedule->command('send:sale-emails')->everyMinute()->runInBackground();
        }
    }
    
    [2021-11-11 17:14:40] local.ERROR: Connection [DATABASECONNECTION] has no configuration in [database.connections.DATABASECONNECTION]
    {"exception":"[object] (InvalidArgumentException(code: 0): Connection [DATABASECONNECTION] has no configuration in
    [database.connections.DATABASECONNECTION] at /home/vagrant/code/email-api/vendor/laravel-doctrine/orm/src/EntityManagerFactory.php:470)
    [stacktrace]
    #0 /home/vagrant/code/email-api/vendor/laravel-doctrine/orm/src/EntityManagerFactory.php(112): LaravelDoctrine\\ORM\\EntityManagerFactory->getConnectionDriver()
    #1 /home/vagrant/code/email-api/vendor/laravel-doctrine/orm/src/IlluminateRegistry.php(81): LaravelDoctrine\\ORM\\EntityManagerFactory->create()
    #2 /home/vagrant/code/email-api/vendor/illuminate/container/Container.php(873): LaravelDoctrine\\ORM\\IlluminateRegistry->LaravelDoctrine\\ORM\\{closure}()
    #3 /home/vagrant/code/email-api/vendor/illuminate/container/Container.php(758): Illuminate\\Container\\Container->build()
    #4 /home/vagrant/code/email-api/vendor/illuminate/container/Container.php(694): Illuminate\\Container\\Container->resolve()
    #5 /home/vagrant/code/email-api/vendor/laravel/lumen-framework/src/Application.php(300): Illuminate\\Container\\Container->make()
    #6 /home/vagrant/code/email-api/vendor/laravel-doctrine/orm/src/IlluminateRegistry.php(396): Laravel\\Lumen\\Application->make()
    #7 /home/vagrant/code/email-api/vendor/laravel-doctrine/orm/src/IlluminateRegistry.php(209): LaravelDoctrine\\ORM\\IlluminateRegistry->getService()
    #8 /home/vagrant/code/email-api/vendor/laravel-doctrine/orm/src/IlluminateRegistry.php(242): LaravelDoctrine\\ORM\\IlluminateRegistry->getManager()
    #9 /home/vagrant/code/email-api/vendor/laravel-doctrine/extensions/src/GedmoExtensionsServiceProvider.php(23): LaravelDoctrine\\ORM\\IlluminateRegistry->getManagers()
    #10 /home/vagrant/code/email-api/vendor/illuminate/events/Dispatcher.php(404): LaravelDoctrine\\Extensions\\GedmoExtensionsServiceProvider->LaravelDoctrine\\Extensions\\{closure}()
    #11 /home/vagrant/code/email-api/vendor/illuminate/events/Dispatcher.php(249): Illuminate\\Events\\Dispatcher->Illuminate\\Events\\{closure}()
    #12 /home/vagrant/code/email-api/vendor/laravel-doctrine/orm/src/DoctrineServiceProvider.php(288): Illuminate\\Events\\Dispatcher->dispatch()
    #13 /home/vagrant/code/email-api/vendor/laravel-doctrine/orm/src/DoctrineServiceProvider.php(158): LaravelDoctrine\\ORM\\DoctrineServiceProvider->bootExtensionManager()
    #14 /home/vagrant/code/email-api/vendor/illuminate/container/Container.php(1269): LaravelDoctrine\\ORM\\DoctrineServiceProvider->LaravelDoctrine\\ORM\\{closure}()
    #15 /home/vagrant/code/email-api/vendor/illuminate/container/Container.php(1234): Illuminate\\Container\\Container->fireCallbackArray()
    #16 /home/vagrant/code/email-api/vendor/illuminate/container/Container.php(1219): Illuminate\\Container\\Container->fireAfterResolvingCallbacks()
    #17 /home/vagrant/code/email-api/vendor/illuminate/container/Container.php(778): Illuminate\\Container\\Container->fireResolvingCallbacks()
    #18 /home/vagrant/code/email-api/vendor/illuminate/container/Container.php(694): Illuminate\\Container\\Container->resolve()
    #19 /home/vagrant/code/email-api/vendor/laravel/lumen-framework/src/Application.php(300): Illuminate\\Container\\Container->make()
    #20 /home/vagrant/code/email-api/vendor/illuminate/container/Container.php(1031): Laravel\\Lumen\\Application->make()
    #21 /home/vagrant/code/email-api/vendor/illuminate/container/Container.php(951): Illuminate\\Container\\Container->resolveClass()
    #22 /home/vagrant/code/email-api/vendor/illuminate/container/Container.php(912): Illuminate\\Container\\Container->resolveDependencies()
    #23 /home/vagrant/code/email-api/vendor/illuminate/container/Container.php(758): Illuminate\\Container\\Container->build()
    #24 /home/vagrant/code/email-api/vendor/illuminate/container/Container.php(694): Illuminate\\Container\\Container->resolve()
    #25 /home/vagrant/code/email-api/vendor/laravel/lumen-framework/src/Application.php(300): Illuminate\\Container\\Container->make()
    #26 /home/vagrant/code/email-api/vendor/illuminate/container/Container.php(1031): Laravel\\Lumen\\Application->make()
    #27 /home/vagrant/code/email-api/vendor/illuminate/container/Container.php(951): Illuminate\\Container\\Container->resolveClass()
    #28 /home/vagrant/code/email-api/vendor/illuminate/container/Container.php(912): Illuminate\\Container\\Container->resolveDependencies()
    #29 /home/vagrant/code/email-api/vendor/illuminate/container/Container.php(758): Illuminate\\Container\\Container->build()
    #30 /home/vagrant/code/email-api/vendor/illuminate/container/Container.php(694): Illuminate\\Container\\Container->resolve()
    #31 /home/vagrant/code/email-api/vendor/laravel/lumen-framework/src/Application.php(300): Illuminate\\Container\\Container->make()
    #32 /home/vagrant/code/email-api/vendor/illuminate/container/BoundMethod.php(175): Laravel\\Lumen\\Application->make()
    #33 /home/vagrant/code/email-api/vendor/illuminate/container/BoundMethod.php(124): Illuminate\\Container\\BoundMethod::addDependencyForCallParameter()
    #34 /home/vagrant/code/email-api/vendor/illuminate/container/BoundMethod.php(36): Illuminate\\Container\\BoundMethod::getMethodDependencies()
    #35 /home/vagrant/code/email-api/vendor/illuminate/container/Util.php(40): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
    #36 /home/vagrant/code/email-api/vendor/illuminate/container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure()
    #37 /home/vagrant/code/email-api/vendor/illuminate/container/BoundMethod.php(37): Illuminate\\Container\\BoundMethod::callBoundMethod()
    #38 /home/vagrant/code/email-api/vendor/illuminate/container/Container.php(653): Illuminate\\Container\\BoundMethod::call()
    #39 /home/vagrant/code/email-api/vendor/illuminate/console/Command.php(136): Illuminate\\Container\\Container->call()
    #40 /home/vagrant/code/email-api/vendor/symfony/console/Command/Command.php(299): Illuminate\\Console\\Command->execute()
    #41 /home/vagrant/code/email-api/vendor/illuminate/console/Command.php(121): Symfony\\Component\\Console\\Command\\Command->run()
    #42 /home/vagrant/code/email-api/vendor/symfony/console/Application.php(978): Illuminate\\Console\\Command->run()
    #43 /home/vagrant/code/email-api/vendor/symfony/console/Application.php(295): Symfony\\Component\\Console\\Application->doRunCommand()
    #44 /home/vagrant/code/email-api/vendor/symfony/console/Application.php(167): Symfony\\Component\\Console\\Application->doRun()
    #45 /home/vagrant/code/email-api/vendor/illuminate/console/Application.php(94): Symfony\\Component\\Console\\Application->run()
    #46 /home/vagrant/code/email-api/vendor/laravel/lumen-framework/src/Console/Kernel.php(116): Illuminate\\Console\\Application->run()
    #47 /home/vagrant/code/email-api/artisan(35): Laravel\\Lumen\\Console\\Kernel->handle()
    #48 {main}
    "}
    

    this does not work also with supervisord

    opened by ukenpachi 15
  • [BUG] Rejects laravel 7 when set as a composer requirement in a repo

    [BUG] Rejects laravel 7 when set as a composer requirement in a repo

    Package version, Laravel version

    orm v.1.5 Laravel 7.x

    Expected behaviour

    When doctrine/orm is specified as "*" within a third party composer repo, the requirements should be met.

    Actual behaviour

    Composer error: for laravel-doctrine/orm 1.5.5 requires illuminate/view ^6.0

    Steps to reproduce the behaviour

    Create a laravel 7 installation (A). Then create new repo (B) with a composer dependency of doctrine/orm: "*". Attempt to include repo B as a dependency to A.

    opened by elb98rm 15
  • [FIX] Use cache for annotation reader

    [FIX] Use cache for annotation reader

    Annotation reader using ArrayCache that is performance killer. http://docs.doctrine-project.org/projects/doctrine-common/en/latest/reference/annotations.html#setup-and-configuration

    • Implemented usage of default cache for annotation reader.
    opened by R3VoLuT1OneR 15
  • [FEATURE] Master/slave connection support.

    [FEATURE] Master/slave connection support.

    Changes proposed in this pull request:

    • Add support for master slave configuration.

    This PR doesn't have breaking changes so long as users don't have random read or write keys in their connection configurations.

    Example master/slave connection configuration:

    [
                'driver'    => 'mysql',
                'host'      => 'localhost',
                'port'      => '3306',
                'database'  => 'test',
                'username'  => 'homestead',
                'password'  => 'secret',
                'write'     => [
                    'port'      => 3307,
                    'user'      => 'homestead1',
                    'password'  => 'secret1',
                ],
                'read' => [
                    [
                        'port'     => 3308,
                        'database' => 'test2',
                    ],
                    [
                        'host' => 'localhost2',
                        'port' => 3309
                    ],
                ],
            ];
    

    Settings can be specified different for each read/write configuration or you can just specify your base settings and override them in a specific read/write configuration (as in example).

    opened by Zylius 15
  • [PROPOSAL] Add router extension for implicitly binding doctrine entities

    [PROPOSAL] Add router extension for implicitly binding doctrine entities

    First of all, I would have loved to discuss this first on Slack, but I can't access the link.

    Anyhow, since Laravel 5.3, the framework implicitly binds all Eloquent models to routes, if the name of the route-parameter and the variable match up. For for example like this:

    Route::get('/api/users/{user}', function (\App\User $user) {
        // $user is now the correct User object fetched from the DB
    });
    

    It would be possible to build a router extension which does the same for Doctrine entities. And that would be very nice, since it would remove that one line of unnecessary boilerplate code. :-)

    feature help wanted 
    opened by Evertt 15
  • [FIX] Failing PHP8 tests

    [FIX] Failing PHP8 tests

    Please prefix your pull request with one of the following: [FIX] [FEATURE].

    Changes proposed in this pull request:

    • Added reporting all errors in phpunit.xml (so all warnings during tests are reported, previously it was falsely passing tests on linux but failing on macos)
    • Fixed bad optional parameter in \LaravelDoctrine\ORM\DoctrineManager::extend()
    • Fixed bad optional parameter in \LaravelDoctrine\ORM\DoctrineManager::callExtendOn()
    • Fixed bad optional parameter in \LaravelDoctrine\ORM\DoctrineManager:::getMetaDataDriver()
    • Updated \LaravelDoctrine\ORM\Middleware\SubstituteBindings::substituteImplicitBindings() to use ReflectionParameter::getType() and new \ReflectionClass() intead of deprecated \ReflectionParameter::getClass()
    • Updated dev dependency itsgoingd/clockwork to ^5.0 to eliminate Required parameter $message follows optional parameter $level warning
    • Fixed bad optional parameters in \LaravelDoctrine\ORM\EntityManagerFactory`
    opened by Jurigag 14
  • [PROPOSAL] Allow persisting entities created with Entity factory

    [PROPOSAL] Allow persisting entities created with Entity factory

    Issue

    So currently almost all my model factories look like this:

    $factory->define(Entities\User::class, function (Faker $faker) {
        return [
            'email' => $faker->unique()->email,
            'display_name' => $faker->firstName . ' ' . $faker->lastName,
            'role' => function () {
                return entity(Entities\Role::class)->create();
            },
        ];
    });
    

    I have to use create() for the role because I don't have cascade persist enabled (and I don't want it), so if using make() I get a ton of A new entity was found through the relationship... errors.

    This causes two issues:

    1. When calling entity(Entities\User::class)->make() the Role gets saved to database.
    2. When calling entity(Entities\User::class)->create() , EntityManager::flush() gets called twice which cause performance issues on large entities with multiple relationships.

    Proposal

    I have a few solutions to propose, all of them work for me:

    1. Have make() call persist on the entities it creates

    pros: Transparent and easy to use. cons: Changes the current behaviour.

    2. Create a new method just for that

    Maybe call it persist() or makeAndPersist()? pros: Clearer and doesn't change current behaviour. cons: One more method that could be confusing.

    3. Have FactoryBuilder persist any entity created through a closure

    pros: Transparent and easy to use. cons: Less differences than 1. but still changes the current behaviour.

    opened by Korri 14
  • [BUG] metadata cache setting not used

    [BUG] metadata cache setting not used

    I'm working through some performance issues and noticed that even though I have DOCTRINE_CACHE=memcached it still uses ArrayCache for annotations. It works correctly for class metadata, which are cached with Laravel's MemcachedStore.

    I traced the cause to the method \Doctrine\ORM\Configuration::newDefaultAnnotationDriver, which has a hardcoded instantiation of ArrayCache. This is still true for the latest version of doctrine.

    To compare with a different environment I started up a Symfony 4 project. The cache works perfectly out of the box when configured to use memcached. It does not, however, use that newDefaultAnnotationDriver method.

    I've been trying to fix this but I haven't found a way yet; annotations uses a different code path than the other cacheable systems.

    opened by bjdelange 13
  • [FIX] fix ClockworkLogger to work with custom types

    [FIX] fix ClockworkLogger to work with custom types

    Recently, I found that ClockworkLogger is not working correctly with custom types. It's caused because a lack of types passed to the formatter in src/Loggers/Clockwork/DoctrineDataSource.php.

    Given query param is an instance of (...)ValueObject and could not be converted to a string
    /vendor/laravel-doctrine/orm/src/Loggers/Formatters/ReplaceQueryParams.php:55
    

    Changes proposed in this pull request:

    • pass types to the formatter in src/Loggers/Clockwork/DoctrineDataSource.php
    opened by sarven 0
  • [FIX] Fix substitute binding type conversion

    [FIX] Fix substitute binding type conversion

    Doctrine documentation says, that PK can be either INT or STRING. There is not any type conversion. Let's say we have some URL /{document}/update. If document has INT PK and we enter something like that /1d/update - we will catch an error from database ERROR: invalid input syntax for type integer: \"1d\". This fix prevents type conversion errors.

    opened by DemianShtepa 6
  • [FEATURE]New database factory system

    [FEATURE]New database factory system

    Changes proposed in this pull request:

    The new database factory system is added, it was copied from the Laravel Eloquent modern factories https://laravel.com/docs/9.x/database-testing Everything except Factory relationships has been implemented and works for Doctrine.

    The new system is object-oriented, easily extensible, doesn't use any magic files and supports IDE autocompletion.

    image

    Fixes #470

    Changes to be done

    Please let me know if this PR looks good, and I'll add documentation (actually copy-paste it from the Laravel).

    The current implementation of database factories

    While Laravel moved the old factory system into another package laravel/legacy-factories, we might leave it for backward compatibility as both systems can coexist without any problem.

    opened by k0ka 3
  • Conflict with symfony/validator,Semantical Error

    Conflict with symfony/validator,Semantical Error

    Package version, Laravel version

    laravel-doctrine/orm": "^1.6",

    "laravel/lumen-framework": "^7.2",

    Expected behaviour

    use Symfony\Component\Validator\Constraints as Assert;
    
    class PushInfo
    {
        /**
         * 
         * @var string
         * @Assert\NotBlank()
         */
        protected $bizId;
    }
    
    $va = sfvalidation();
            $errors = $va->validate($pushInfo);
    
    can work
    

    Actual behaviour

    i got a exception [Semantical Error] The annotation \"@Symfony\\Component\\Validator\\Constraints\\NotBlank\" in property App\\Utils\\HllPush\\PushInfo::$bizId was never imported. Did you maybe forget to add a \"use\" statement for this annotation?

    Steps to reproduce the behaviour

    when i delete DoctrineServiceProvider

    image

    it can work right!

    opened by visonforcoding 2
Releases(1.8.1)
  • 1.8.1(Jun 2, 2022)

  • 1.7.13(Dec 22, 2021)

    • Hash password-reset tokens before storing (#508 #506) @rosamarsky
    • Trying to print_r circular entity dependency results in OOM in InteractsWithEntities (#510) @k0ka

    Also thanks to @dpslwk for review.

    ⚠️ Breaking change

    • All password reset tokens will be invalidated.
    Source code(tar.gz)
    Source code(zip)
  • 1.6.1(Jul 23, 2020)

    • Fixed callAfterCreating for one entity in FactoryBuilder::create #441 @zergbz1988

    From 1.5.8:

    • Handle default table options in master slave connection #453 @zackrowe
    • Fixed syntax error in facade method EntityManager::getIdentifierFlattener #446 @gazhur94
    Source code(tar.gz)
    Source code(zip)
  • 1.5.8(Jul 23, 2020)

    • Handle default table options in master slave connection #453 @zackrowe
    • Fixed syntax error in facade method EntityManager::getIdentifierFlattener #446 @gazhur94
    Source code(tar.gz)
    Source code(zip)
Owner
Laravel Doctrine
A drop-in Doctrine ORM 2 implementation for Laravel 5+ & Lumen
Laravel Doctrine
Doctrine Object Relational Mapper (ORM)

3.0.x 2.9.x 2.8.x Doctrine 2 is an object-relational mapper (ORM) for PHP 7.1+ that provides transparent persistence for PHP objects. It sits on top o

Doctrine 9.5k Jan 2, 2023
Baum is an implementation of the Nested Set pattern for Laravel's Eloquent ORM.

Baum Baum is an implementation of the Nested Set pattern for Laravel 5's Eloquent ORM. For Laravel 4.2.x compatibility, check the 1.0.x branch branch

Estanislau Trepat 2.2k Jan 3, 2023
🔌 A Doctrine DBAL Driver implementation on top of Swoole Coroutine PostgreSQL extension

Swoole Coroutine PostgreSQL Doctrine DBAL Driver A Doctrine\DBAL\Driver implementation on top of Swoole\Coroutine\PostgreSQL. Getting started Install

Leo Cavalcante 19 Nov 25, 2022
A drop-in library for certain database functionality in Laravel, that allows for extra features that may never make it into the main project.

Eloquence Eloquence is a package to extend Laravel's base Eloquent models and functionality. It provides a number of utilities and classes to work wit

Kirk Bushell 470 Dec 8, 2022
ORM layer that creates models, config and database on the fly

RedBeanPHP 5 RedBeanPHP is an easy to use ORM tool for PHP. Automatically creates tables and columns as you go No configuration, just fire and forget

Gabor de Mooij 2.2k Jan 9, 2023
MongoDB ORM that includes support for references,embed and multilevel inheritance.

Introduction Features Requirements Installation Setup Database Basic Usage - CRUD Relationship - Reference Relationship - Embed Collection Inheritance

Michael Gan 202 Nov 17, 2022
Low code , Zero Configuration ORM that creates models, config, database and tables on the fly.

?? ARCA ORM ?? Low code , Zero Configuration ORM that creates models, config, database and tables on the fly. ?? ???? Made in India ???? Complete docu

Scrawler Labs 28 Dec 18, 2022
The Enobrev\ORM library is a small framework of classes meant to be used for simply mapping a mysql database to PHP classes, and for creating simply SQL statements using those classes.

The Enobrev\ORM library is a small framework of classes meant to be used for simply mapping a mysql database to PHP classes, and for creating simply SQL statements using those classes.

Mark Armendariz 0 Jan 7, 2022
Articulate - An alternative ORM for Laravel, making use of the data mapper pattern

Articulate Laravel: 8.* PHP: 8.* License: MIT Author: Ollie Read Author Homepage: https://ollie.codes Articulate is an alternative ORM for Laravel bas

Ollie Codes 4 Jan 4, 2022
Propel2 is an open-source high-performance Object-Relational Mapping (ORM) for modern PHP

Propel2 Propel2 is an open-source Object-Relational Mapping (ORM) for PHP. Requirements Propel uses the following Symfony Components: Config Console F

Propel 1.2k Dec 27, 2022
PHP DataMapper, ORM

Cycle ORM Cycle is PHP DataMapper, ORM and Data Modelling engine designed to safely work in classic and daemonized PHP applications (like RoadRunner).

Cycle ORM 1.1k Jan 8, 2023
Extensions for the Eloquent ORM

Sofa/Eloquence Easy and flexible extensions for the Eloquent ORM. Currently available extensions: Searchable query - crazy-simple fulltext search thro

Jarek Tkaczyk 1.1k Dec 20, 2022
Ouzo Framework - PHP MVC ORM

Ouzo is a PHP MVC framework with built-in ORM and util libraries. PHP 8.0 or later is required. We believe in clean code and simplicity. We value unit

Ouzo 69 Dec 27, 2022
Builds Cycle ORM schemas from OpenAPI 3 component schemas

Phanua OpenAPI 3 + Jane + Cycle ORM = ?? Phanua builds Cycle ORM schemas from OpenAPI 3 component schemas. Released under the MIT License. WARNING: Th

Matthew Turland 5 Dec 26, 2022
Simple Enum cast for Eloquent ORM using myclabs/php-enum.

Enum cast for Eloquent Simple Enum cast for Eloquent ORM using myclabs/php-enum. Requirements PHP 7.3 or higher Laravel 8.0 or higher Installation You

Orkhan Ahmadov 5 Apr 21, 2022
Extra RedBean ORM

RedBeanPHP 5 RedBeanPHP is an easy to use ORM tool for PHP. Automatically creates tables and columns as you go No configuration, just fire and forget

GingTeam Development 5 Nov 23, 2022
Orm is a simple database abstraction layer that supports postgresql.

Orm What is it Orm is a simple database abstraction layer that supports postgresql. Welcome to join us or star us for encouragement. Requires php 8.1

null 2 Sep 28, 2022
Monadic Doctrine repositories helper classes and services.

Doctrine Repository Monadic Helper Description This project provides the necessary classes and services to use Doctrine repositories in a more functio

(infinite) loophp 10 Aug 29, 2022
Spot v2.x DataMapper built on top of Doctrine's Database Abstraction Layer

Spot DataMapper ORM v2.0 Spot v2.x is built on the Doctrine DBAL, and targets PHP 5.4+. The aim of Spot is to be a lightweight DataMapper alternative

Spot ORM 602 Dec 27, 2022