Я не могу ограничивать свой поиск/показывать мои результаты в зависимости от их категорий.Как отображать статьи с определенными категориями, соответствующими входной форме формы - Laravel
У меня есть много разных отношений. Статья содержит много категорий, и в категории есть много статей. Пользователь вводит адрес в форму и выбирает 1-3 категории. Затем я хочу сопоставить указанные категории пользователей со статьями из моего db, которые имеют эти категории, и отображать только эти конкретные статьи.
Я смотрел на многие вопросы, такие как THIS ONE и, похоже, не может заставить работать. Моя основная ошибка заключается в том, что я получаю неопределенное свойство $ категорий.
Прежде чем я добавил материал категории, он работал, и я мог отображать список статей, находящихся на определенном расстоянии. Я использую Laravel 5.1.
Таблица базы данных: 'статьи' (идентификатор, название, и т.д ...) (номер, имя) 'Категория' 'article_category' (article_id, category_id)
Вот мой код :
Статья модель: модель
public function categories()
{
return $this->belongsToMany('App\Category')->withTimestamps();
}
public function getCategoryListAttribute()
{
return $this->categories->lists('id')->all();
}
Категория:
public function articles()
{
return $this->belongsToMany('App\Article')->withTimestamps();
}
Статьи Контроллер
public function index(Request $request)
{
$lat = $request->get('lat');
$lng = $request->get('lng');
<--! THIS GETS THE USER DEFINED CATEGORY CHOICES -->
$categoryChoice = $request->get('categoryList');
$distance = 1;
$query = Article::getByDistance($lat, $lng, $distance);
if(empty($query)) {
return redirect()->action('[email protected]');
}
$ids = [];
//Extracts the alticle/store id's
foreach($query as $q)
{
array_push($ids, $q->id);
}
<--! Get the listings that match the returned ids -->
$results = DB::table('articles')
->whereIn('id', $ids)
->orderBy('title', 'DESC')
->paginate(6);
$articles = $results;
<--! THIS IS TO GET CATEGORY IDS OF NEARBY STORES - NOT WORKING ->
$categoryMatches = [];
foreach ($articles->categories as $category){
array_push($categoryMatches, $category->pivot->category_id);
}
<--! THIS WILL IDENTIFY WHETHER THE CATEGORIES OF NEARBY STORES MATCH THE CATEGORIES CHOSEN IN THE FORM - NOT WORKING -->
$articles = $articles->whereIn($categoryMatches, $categoryChoice);
return view('articles.index', compact('categories', 'days'))->withArticles($articles);
}
Спасибо. В какой момент это произойдет? Я все еще получаю «Неопределенное свойство: stdClass :: $ categories», когда я его использую. –