Flexible query building library for PDO connections with a small API surface and auto-complete support (low cognitive load). Requires an atlas/pdo connection.

1.2.1 2020-11-24 15:03 UTC

This package is auto-updated.

Last update: 2024-11-24 23:28:02 UTC


README

Source Code Latest Version Software License Build Status Coverage Status Quality Score

The siriusphp/sql library is designed to help you build and execute SQL simple and complex queries in a fast and safe way.

The vocabulary is as close to SQL as possible as you may see from the example below:

use Atlas\Pdo\Connection;
use Sirius\Sql\Select;
use Sirius\Sql\ConditionsEnum;

$connection = Connection::new('sqlite::memory:');
$select = new Select($connection);

// find the 10 "cool" posts that are published and also retrieve the comments count
$select->distinct()
    ->columns('posts.*', 'COUNT(comments.id) AS comments_count')
    ->from('posts')
    ->join('LEFT', 'comments', 'comments.commentable_id = posts.id AND comments.commentable_type = %s', 'posts')
    ->where('posts.published_at < NOW()')
    ->where('posts.title', 'cool', ConditionsEnum::CONTAINS)
    ->groupBy('posts.id')
    ->limit(10);

$posts = $select->fectchAll();

Links

Acknowledgements

This library is a derivative work of atlas/query. I made this library for 2 reasons:

  • to reduce cognitive load by removing some methods and implementing other ways to achieve the same goals (eg: nested conditions)
  • to optimize some operations for the most common scenarios (eg: where($column, $str, 'does_not_contain') vs where($column . ' LIKE ', '%' . $str . '%')