Красноречивый запрос для фильтра с несколькими параметрами из URL (некоторые параметры не могут быть указаны)Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Красноречивый запрос для фильтра с несколькими параметрами из URL (некоторые параметры не могут быть указаны)

Сообщение Anonymous »

I am new for Eloquent Query Builder and I have some questions:
Goal: Create a query that will get me recipes that match the specified parameters from selectors:
  • Dish Category
  • Dish Subcategory
  • Cuisine
  • Меню
Важный нюанс: В селекторах вы не можете выбрать подкатегорию без сначала выбора категории (в зависимости от выбора, используя LiveWire). />

Код: Выделить всё

http://127.0.0.1:8000/recipes?dish_category=2&dish_subcategory=37&cuisine=1&menu=1< /code> < /p>
[b] Проблема: < /strong> < /p>

[*]  Я заметил, что все еще могу удалить идентификатор категории в URL и оставить только подкатегорию:
http://127.0.0.1:8000/recipes?dish_category=&dish_subcategory=37&cuisine=1&menu=1


Как достичь поведения, когда пользователь может только вводить, например, «кухня» в селектор, а запрос выбирает рецепты, которые соответствуют только этому параметру? Он показывает мне правильные данные, но я не уверен, что это правильный способ фильтрации данных с использованием параметров URL: < /p>

Код: Выделить всё

        $recipes = Recipe::with('user', 'cuisine')
->where('dish_category_id', $request->query('dish_category'))
->orWhere('dish_subcategory_id', $request->query('dish_subcategory'))
->orWhere('cuisine_id', $request->query('cuisine'))
->orWhere('menu_id', $request->query('menu'))
->get();

dd($recipes);
и dd ($ recents) Показывает мне:

Код: Выделить всё

Illuminate\Database\Eloquent\Collection {#1085 ▼ // app\Http\Controllers\RecipeController.php:26
#items: array:2 [▼
0 =>
App\Models
\
Recipe {#1116 ▶}
1 =>
App\Models
\
Recipe {#1082 ▶}
]
#escapeWhenCastingToString: false
}
(2 рецепта, обнаруженные с параметрами, указанными пользователем, также, если пользователь входит только в категорию параметров: бульон, то же результат получен)
Заключение: [/b] ​​ Именно на это не нужно, но я также нуждаюсь в том, чтобы я также не нуждался в том, чтобы я также не нуждался в том, чтобы быть и для написания, но не так, как это нужно, но не так и для работы. Проблемы , описанный выше
, были бы благодарны за советы и помощь.

Редактировать 01:
Я пытался подходить к When () method:

Код: Выделить всё

        $recipes = DB::table('recipes')
->when($dish_category, function ($query, $dish_category){
$query->where('dish_category_id', $dish_category);
})
->when($dish_subcategory, function ($query, $dish_subcategory){
$query->where('dish_subcategory_id', $dish_subcategory);
})
->when($cuisine, function ($query, $cuisine){
$query->where('cuisine_id', $cuisine);
})
->when($menu, function ($query, $menu){
$query->where('menu_id', $menu);
})
->get();
Это работает, но я все еще могу вставить Dish_subcategory_id в URL (я не уверен>

Подробнее здесь: https://stackoverflow.com/questions/795 ... rs-may-not
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»