В настоящее время я создаю REST API на основе CRUD из существующего приложения Cake PHP 3.8 и работаю над уточнением результатов для моих конечных точек CRUD. Я вижу, что строки запроса - это RESTful-способ сделать это в ансерах, таких как этот , например, используя такие запросы для поиска цвета, типа и дверей на ресурсе автомобилей:
/cars?color=blue&type=sedan&doors=4
Я мог бы жестко закодировать что-то вроде следующего псевдокода:
// Binding would be used to handle sql injection in actual code, but this demonstrates my point
$getParameters = $this->request->getQuery();
$query = $this->CarsTable->find('all');
if(array_key_exists('color', $getParameters) {
$query->andwhere(['Cars.color like' => $getParameters['color']]));
}
if(array_key_exists('type', $getParameters) {
$query->andwhere(['Cars.type like' => $getParameters['type']]));
}
if(array_key_exists('doors', $getParameters) {
$query->andwhere(['Cars.doors' => $getParameters['doors']]));
}
Но у меня есть много сложных объектов, которые я собираюсь охватить, и кажется, что там был бы более рациональный подход для как справиться с этим?
Мне интересно, какой будет наиболее идеальный (или, по крайней мере, более идеальный) метод решения этой проблемы при построении запросов / интеграции CakeORM? Или есть хороший плагин для оптимизации таких запросов в Cake PHP?
Я смотрел FriendsOfCake / search , который, как я знаю, является инструментом поиска. Но похоже, что он может поддерживать тот тип функциональности, на который я смотрю.
Хотя, если есть что-то более специфичное для преобразования строк запроса в запросы Cake orm, я бы узнал, что это за инструмент?
Заранее спасибо за помощь!