Как запросить массив категорий, чтобы получить сообщения в Laravel?

Как запросить массив категорий, чтобы получить сообщения в Laravel?

27.01.2020 12:31:53 Просмотров 31 Источник

Привет на моем сайте я хочу показать сообщения, которые Результат выбранного-мульти категория с помощью флажков ввода. Я извлекаю категории в URL с разделителем " - " и разнесу в массив. мой вопрос здесь, как получить сообщения, используя имена массива категорий? связь между должностями и категориями-это много ко многим.

отправка данных на URL сообщений:

    public function filter(Request $request){
        $data = $request->all();
        $cat_Name="";
        if(!empty($data['categoryFilter'])){
            foreach($data['categoryFilter'] as $cat){
                if(empty($cat_Name)){
                    $cat_Name = "&cat_Name=".$cat;
                }else{
                    $cat_Name .= "-".$cat;
                }
            }
        }

        $finalUrl = "posts"."?".$cat_Name;
        return redirect::to($finalUrl);
    }

получение данных из url и разнесение в массив:

    if(!empty($_GET['cat_Name'])){
        $categoryArray = explode('-',$_GET['cat_Name']);
    }

теперь я хочу, чтобы запрос получал сообщения, которые существовали категории в $categoryArray.

У вопроса есть решение - Посмотреть?

Ответы - Как запросить массив категорий, чтобы получить сообщения в Laravel? / How query to array of categories to get posts in Laravel?

Является ответом!
TsaiKoga

27.01.2020 12:46:06

Так как у вас есть много-ко-многим отношения между Postи Category,

вы можете просто использовать whereHas, чтобы найти сообщения, которые имеют категории с этим cat_name:

Post::whereHas('categories', function($q) use ($categoryArray) {
    return $q->whereIn('cat_name', $categoryArray);
});

и просто используйте request, чтобы получить параметры вместо $_GET:

public function yourActionName(Request $request)
{
    if(!empty($request->input('cat_Name')){
       $categoryArray = explode('-', $request->input('cat_Name'));
       $posts = Post::whereHas('categories', function($q) use ($categoryArray) {
           return $q->whereIn('cat_name', $categoryArray);
       })->get(); 
    } else {
       ...
    }
    ...
}
Помочь в развитии проекта:
Закрыть X