Skip to content

Instantly share code, notes, and snippets.

@szabacsik
Last active October 18, 2022 15:03
Show Gist options
  • Save szabacsik/a11441f64f1b87af6e6dd6e182ba65ca to your computer and use it in GitHub Desktop.
Save szabacsik/a11441f64f1b87af6e6dd6e182ba65ca to your computer and use it in GitHub Desktop.
PHP - DBAL / ORM / Query Builder

PHP - DBAL / ORM / Query Builder

Doctrine Query Builder

use Doctrine\DBAL\DriverManager;

require_once __DIR__ . '/vendor/autoload.php';

$connectionParams = [
    'url' => 'mysql://user:secret@localhost/mydb',
];
$connection = DriverManager::getConnection($connectionParams);
$queryBuilder = $connection->createQueryBuilder();
$query = $queryBuilder
    ->select('user.id', 'user.name', 'post.title')
    ->from('users', 'user')
    ->leftJoin('user', 'posts', 'post', 'user.id = post.user_id')
    ->where('email = :EMAIL')
    ->setParameter(':EMAIL', 'john.doe@example.com');
echo $query->getSQL() . "\n";
var_dump($query->getParameters());

https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/query-builder.html#sql-query-builder

Aura Query Builder

use Aura\SqlQuery\QueryFactory;

require_once __DIR__ . '/vendor/autoload.php';

$queryFactory = new QueryFactory('mysql');
$query = $queryFactory->newSelect();
$query
    ->cols(['user.id', 'user.name', 'post.title'])
    ->from('users AS user')
    ->join('LEFT', 'posts AS post', 'user.id = post.user_id')
    ->where('user.email = :EMAIL')
    ->bindValue(':EMAIL', 'john.doe@example.com');
echo $query->getStatement() . "\n";
var_dump($query->getBindValues());

https://github.com/auraphp/Aura.SqlQuery/blob/3.x/docs/index.md

Use Eloquent Illuminate in PHP Without Laravel

<?php

//composer require illuminate/database

require_once __DIR__ . '/vendor/autoload.php';

use Illuminate\Database\Capsule\Manager as Capsule;
use Illuminate\Database\Schema\Blueprint;

$capsule = new Capsule();
$capsule->addConnection([
    "driver" => "mysql",
    "host" => "127.0.0.1",
    "database" => "database",
    "username" => "root",
    "password" => "PASSWORD"
]);
$capsule->setAsGlobal();
$capsule->bootEloquent();

Capsule::schema()->create('users', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->string('email')->unique();
    $table->timestamps();
});
$date = (new \DateTime())->format('Y-m-d H:i:s');
Capsule::table('users')->insert([
    'name' => 'John Doe',
    'email' => 'john.doe@exmple.com',
    'created_at' => $date,
    'updated_at' => $date,
]);

$results = Capsule::table('users')
    ->select('*')
    ->where('name', '=', 'John Doe')
    ->get();

var_dump($results);

https://www.cloudways.com/blog/eloquent-illuminate-in-php-without-laravel/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment