2017-09-05 48 views
0

幫助或協助,因爲它不會對類別進行排序,我不明白爲解決這個問題。 我最近學習laravel。此收集實例上不存在屬性[項目]。 laravel 5.4

控制器:class ArticlesController

public function showAll ($category_id) 
{ 
    $categories = Category::where('name', $category_id)->get(); 
    return view('categories')->with(compact('categories', 'articles')); 
} 

這一觀點從中我想進入的類別。 site.blade.php

@foreach($categories as $category) 
     <li><a class="nav-link text-white" href={{route('articlesShow', ['id'=>$category->id]) }}">{{ $category->name }}</a></li> 
@endforeach 

路線:

Route::get('/categories/{category_id}', '[email protected]')->name('articlesShow'); 

型號:類別

public function articles() 
{ 
    return $this->hasMany(Article::class, 'category_id'); 
} 

表示在沒有得到得到:categories.blade.php

@foreach($categories->articles as $article) 
      <div class="col-6 col-lg-4"> <!--Post --> 
      <img src="{{ asset('upload/image/1.jpg') }}" width="255" alt="..." class="rounded img_size"> 
      <h4> {{ $article->title }}</h4> 
      <h6>Category: <a href="/"> {{ $article->category->name }}</a></h6> 
      <h6>Author: {{ $article->author }}</h6> 
      <p>{{ $article->text }} </p> 
      <p><a class="btn btn-secondary" href="{{ route('articleShow', ['id' =>$article->id]) }}"> More &raquo;</a></p> 
      </div><!--EndPost--> 
@endforeach 

回答

0

$類是包含類別的n數組,並且文章屬性屬於一個類別,因此在訪問文章之前必須循環分類。

試試這個:

@foreach($categories as $category) 
@foreach($category->articles as $article) 
     <div class="col-6 col-lg-4"> <!--Post --> 
     <img src="{{ asset('upload/image/1.jpg') }}" width="255" alt="..." class="rounded img_size"> 
     <h4> {{ $article->title }}</h4> 
     <h6>Category: <a href="/"> {{ $article->category->name }}</a></h6> 
     <h6>Author: {{ $article->author }}</h6> 
     <p>{{ $article->text }} </p> 
     <p><a class="btn btn-secondary" href="{{ route('articleShow', ['id' =>$article->id]) }}"> More &raquo;</a></p> 
     </div><!--EndPost--> 
@endforeach 
@endforeach 
+0

謝謝您花時間幫忙。錯誤不會產生,但是當你點擊鏈接時,它不會顯示任何內容。 –

+0

try {{route('articleShow',['categories_id'=> $ category-> id])}}而不是{{route('articleShow',['id'=> $ article-> id])}} – Quezler

+0

謝謝,現在顯示的文章,但在菜單中,當你點擊類別時,另一個類別消失,並在它出現的地方它點擊。在控制器中的代碼是這樣的:$ categories = Category :: with('articles') - > where('id',$ category_id) - > get(); return view('categories') - > with(compact('categories',$ categories)); –

0

首先:使用eager loading

假設,你[email protected]方法應該顯示給定類別ID的所有文章,您的查詢應該是這樣的

public function showAll ($category_id) 
{ 
    $categoryArticles = Category::with('articles')->where('id', $category_id)->get(); 
    return view('categories')->with('categoryArticles', $categoryArticles); 
} 

然後以顯示給定類別的所有文章(假設一篇文章只有一個類別) ,這可能是一種方式:

@foreach($categoryArticles->articles as $article) 
      <div class="col-6 col-lg-4"> <!--Post --> 
      <img src="{{ asset('upload/image/1.jpg') }}" width="255" alt="..." class="rounded img_size"> 
      <h4> {{ $article->title }}</h4> 
      <h6>Category: <a href="/"> {{ $categoryArticles->name }}</a></h6> 
      <h6>Author: {{ $article->author }}</h6> 
      <p>{{ $article->text }} </p> 
      <p><a class="btn btn-secondary" href="{{ route('articleShow', ['id' =>$article->id]) }}"> More &raquo;</a></p> 
      </div><!--EndPost--> 
@endforeach 
+0

感謝您花時間幫助。 它給出了同樣的錯誤:屬性[articles]在這個集合實例中不存在。 (查看:/home/vagrant/Code/nexta/resources/views/categories.blade.php) –

+0

我更新了我的虛擬代碼,將變量重命名爲'$ categoryArticles',因爲您已經在某些地方使用了變量'$ category'以前的刀片模板。這應該現在工作。 – fab

+0

謝謝你,你想幫忙,但你得到這個錯誤:未定義的變量:categoryArticles(View:/home/vagrant/Code/nexta/resources/views/categories.blade.php) 事實證明,當你去最後的表示沒有這個變量,爲什麼會發生這種情況。 –