Как запросить массив категорий, чтобы получить сообщения в Laravel?
Привет на моем сайте я хочу показать сообщения, которые Результат выбранного-мульти категория с помощью флажков ввода. Я извлекаю категории в 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?

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 {
...
}
...
}