siriusphp / sql
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
Requires
- php: >=7.1
- atlas/pdo: ^1.1
Requires (Dev)
- mockery/mockery: ^1.3
- phpunit/phpunit: ^8.5
This package is auto-updated.
Last update: 2024-11-24 23:28:02 UTC
README
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')
vswhere($column . ' LIKE ', '%' . $str . '%')