2015-07-09 6 views
0

Я хочу получить название категории товаров. Это мой CategoriesController:Получение статей категории laravel

public function show(Category $category) 
{   
    $articles = $category->articles()->latest()->paginate(5); 
    return view('categories.index', compact('articles')); 
} 

Когда я пытаюсь сделать это следующим образом: {{$articles->category()}}

я получаю эту ошибку: call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Database\Eloquent\Collection' does not have a method 'category'

ответ

0

У вас уже есть категория получать передается ваши действия контроллера, так просто передать этот экземпляр на ваш взгляд, а не пытаться захватить его из каждого пункта статьи и, возможно, добавление больше запросов к базе данных к действию вашего контроллера.

public function show(Category $category) 
{ 
    return view('categories.index', compact('articles', 'category')); 
} 
+0

Да! Работает! '{{$ category-> name}}' и все работает! – feknaz

0

$articles бы, в этом случае представлять собой совокупность нескольких статьи. Поэтому вы не можете просто сделать {{ $articles->category }}.

Это должно работать, однако:

@foreach ($articles as $article) 
    {{ $article->category }} 
@endforeach 
+0

Я получаю это сейчас: '[{ "ID": 4, "слизняк": "Naujienos", "имя": "Naujienos", "created_at":" 2015-07-09 10 : 23: 07 "," updated_at ":" 2015-07-09 10:23:07 "," pivot ": {" article_id ": 2," category_id ": 4}}], но без ошибок только этот простой текст на странице. – feknaz

+0

Если вы хотите название категории, то: '{{$ article-> category-> name}}'. Но, как уже упоминалось, это приводит к множеству запросов, если вы не используете [eager-load] (http://laravel.com/docs/5.1/eloquent-relationships#eager-loading) таблицы. – Piper