b2pweb/bdf-prime

Bdf Prime ORM

Maintainers

πŸ‘ Johnmeurt

Package info

github.com/b2pweb/bdf-prime

pkg:composer/b2pweb/bdf-prime

Statistics

Installs: 14 702

Dependents: 9

Suggesters: 0

Stars: 3

Open Issues: 7

v2.2.3 2025-12-16 13:23 UTC

Requires

Requires (Dev)

Suggests

  • b2p/bdf-console: required to use prime commands (~1.5)
  • b2p/bdf-web: required to use service provider (~1.5)
  • nikic/php-parser: required to use closure filters (~4.15)

Provides

None

Conflicts

None

Replaces

None

MIT 3cff8af0ee6a9175e672a4a3489de9f1e7e7a565

  • SΓ©bastien Tanneux

README

Prime is a Data mapper ORM based on doctrine DBAL. The goal of prime is to lightweight usage of data mapper and doctrine DBAL.

πŸ‘ build
πŸ‘ Scrutinizer Code Quality
πŸ‘ codecov
πŸ‘ Packagist Version
πŸ‘ Total Downloads
πŸ‘ Type Coverage

Getting Started

See Wiki for more information

composer require b2pweb/bdf-prime
<?php

use Bdf\Prime\ConnectionManager;
use Bdf\Prime\Entity\Model;
use Bdf\Prime\Mapper\Mapper;
use Bdf\Prime\Mapper\Builder\FieldBuilder;
use Bdf\Prime\Mapper\Builder\IndexBuilder;
use Bdf\Prime\Query\Expression\Like;
use Bdf\Prime\ServiceLocator;

// Declare your entity
class User extends Model
{
 public $id;
 public $firstName;
 public $lastName;
 public $email;

 public function __construct(array $data) 
 {
 $this->import($data);
 }
}

// Declare the data mapper for the entity
class UserMapper extends Mapper
{
 public function schema(): array
 {
 return [
 'connection' => 'myDB',
 'table' => 'users',
 ];
 }
 
 public function buildFields(FieldBuilder $builder): void
 {
 $builder
 ->bigint('id')->autoincrement()
 ->string('firstName')
 ->string('lastName')
 ->string('email')
 ;
 }

 public function buildIndexes(IndexBuilder $builder): void
 {
 $builder->add()->on('name');
 }
}

// Declare your connections
$connexions = new ConnectionManager();
$connexions->declareConnection('myDB', 'mysql://myuser:mypassword@localhost');

// Use the service locator to locate your repositories
$manager = new ServiceLocator($connexions);
Locatorizable::configure($manager);
$repository = $manager->repository(User::class);

// Get and update an entity
$user = User::findById(1);
$user->setFirstName('john')->save();

// Use a query builder for searching entities 
User::where('firstName', 'john')->orWhere('email', (new Like('john%'))->startsWith())->all();