Рекомендуется использовать строитель запросов в репозиториях.
Для использования строителя запросов необходимо обратится к фасаду:
use Rudra\Model\QBFacade;
Построение запроса:
$qString = QBFacade::select()
->from(self::$table)
->get();
SELECT * FROM test ;
Получение данных:
$result = Test::qBuilder($qString);
2.
$qString = QBFacade::select('id, title')
->from(self::$table)
->get();
SELECT id, title FROM test ;
Получение данных:
$result = Test::qBuilder($qString);
3.
$qString = QBFacade::select('id, title', 'created_at')
->from(self::$table)
->where(':id')
->and(':created_at')
->get();
SELECT id, title FROM test WHERE id = :id AND created_at = :created_at ;
Получение данных:
$result = Test::qBuilder($qString, [
':id' => 1,
':created_at' => '2022-02-23 14:36:06'
]);
Также доступны следующие конструкции:
->where(':id')
->or(':created_at')
->where(':id AND :created_at')
->where(':id OR :created_at')
->where('id BETWEEN :id AND :id2')
->where('id LIKE :search')
->limit('10')->offset('20')
Для объединения таблиц по ключу:
->join("users")->on("items.user_id = users.id")
По умолчанию тип объединения LEFT JOIN, для изменения типа объединения:
->join("users", "RIGHT")->on("items.user_id = users.id")
->join("users", "INNER")->on("items.user_id = users.id")
->join("users", "CROSS")->on("items.user_id = users.id")
Для формирования строки запроса строитель всегда должен заканчиваться методом.
->get();