Flexible query building library for PDO connections with a small API surface and auto-complete support (low cognitive load). Requires an atlas/pdo connection.
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();
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 . '%')