[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Laravel запрос в БД
Snnick
Всем привет. Осваиваю Laravel и столкнулся с следующей проблемой.
Есть запрос на Query Builder, который вытягивает информацию с БД.
Пример:

public function getFoodTypesListByCountObject($countryId = false, $cityId = false, $regionId = false, $dateFrom = false, $dateTo = false, $person = false)
{

$objectsFoodTypes = DB::table('food_types AS ft')
->
select('ft.id', 'ft.name', DB::raw('count(DISTINCT o.id) as countObject'))
->
join('objects AS o', 'ft.id', '=', 'o.foodTypesId')
->
join('rooms AS r', 'o.id', '=', 'r.objectId')
->
where([
[
'o.countryId', '=', $countryId],
[
'o.cityId', '=', $cityId],
[
'o.regionId', '=', $regionId],
[
'o.person', '=', $person],
])
->
groupBy('ft.id')
->
get();

return $objectsFoodTypes;
}

Из реквеста приходят параметры, от которых зависит вывод информации на страничке. Не могу разобраться как в Laravel исключать параметр из массива where([['o.person', '=', $person]]) , если например вместо значения параметра $person пришел false.

В сыром запросе можно делать все так:

public function getListObjects($countryId, $cityId = false, $regionId = false, $dateFrom = false, $dateTo = false, $person = false) {

$sql = "SELECT *
FROM objects AS o
JOIN cities AS c ON o.`cityId` = c.`id`
WHERE
o.`valuePercent` = 50 "
.
((
$countryId) ? " AND c.countryId = " . $countryId : "") .
((
$cityId) ? " AND c.id = " . $cityId : "") .
((
$regionId) ? " AND c.regionId = " . $regionId : "") .
((
$person) ? " AND r.amountPerson = " . $person : "") .
AND (o.price > 0 AND o.price <=2000)
GROUP BY o.id";

$objects = DB::select($sql);
return
$objects;
}



Подскажите как средствами Laravel подобное, на примере первого запроса?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.