У меня есть следующиеLaravel возвращаемых результатов на основе выбора пользователя
HTML
<input type="checkbox" name="symbols[]" value="1" />
<input type="checkbox" name="symbols[]" value="2" />
<input type="checkbox" name="symbols[]" value="3" />
etc...
<select name="city">
<option value="Dublin">Dublin</option>
<option value="Cork">Cork</option>
etc ...
</select>
Laravel
return DB::table('restaurants')
->select('restaurants.id as restaurantId',
'restaurants.image_id as imageId',
'restaurants.name as restaurantName',
'restaurants.slug as restaurantSlug',
'restaurants.description as restaurantDescription')
->leftJoin('restaurants_symbols', 'restaurants_symbols.restaurant_id', '=', 'restaurants.id')
->leftJoin('restaurants_locations', 'restaurants_locations.restaurant_id', '=', 'restaurants.id')
->groupBy('restaurants_symbols.restaurant_id')
->where(function($q) use ($input) {
$q->whereIn('restaurants_symbols.symbol_id', $input['symbol']);
if(!empty($input['city'])) {
$q->where('restaurants_locations.city', $input['city']);
}
})
->get();
Все работает отлично кроме того факта, что если пользователь проверяемого значение1 и значение2, тем запрос возвращает все рестораны, которые содержат value1 ИЛИ value2, поэтому я хочу добиться возврата только ресторанов, у которых есть символы, представляющие значение 1 и значение2 только.
Любые предложения? Я думал, может быть, вернуть значения так, как они есть, а затем отфильтровать их в цикле foreach, но я не знаю, возможно ли это, и если это я, я не вижу логики, как это сделать, любые мысли об этом ?
Спасибо за быстрый ответ. Я попробовал, и я вернул ошибку «Неопределенное смещение: 0» – lesandru
Опубликуйте свой массив $ input ['symbol'] –
array (2) {[0] => string (1) "1" [1] => string (2) «29»} – lesandru