2016-12-18 22 views
0

これがどういう仕組みか分かりませんので、私は尋ねています。私はまだ掲示板システムに取り組んでおり、それぞれカテゴリサブカテゴリの下にそれぞれ欲しいです。例えばlaravel 5.3のforeach()に無効な引数が指定されています

enter image description here

私はLaraCastsに次のスレッドを使用してこれを行っています https://laracasts.com/discuss/channels/eloquent/eloquent-getting-subcategories-from-the-categories

今私のIndexControllerは次のようになります。

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Thread; 
use App\Chat; 
use App\Category; 


class IndexController extends Controller 
{ 
    /** 
    * Show the application dashboard. 
    * 
    * @return \Illuminate\Http\Response 
    */ 
    public function index() 
    { 
     $threads = Thread::all()->toArray(); 
     $chats = Chat::orderBy('id', 'DESC')->take(50)->with('author')->get(); 
     $categories = Category::with('sub_category')->get(); 

     return view('index', compact('threads','chats','categories')); 
    } 

} 

これは私のカテゴリーのモデルであります:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Category extends Model 
{ 


    public function sub_category() 
    { 
     return $this->belongsTo(self::class, 'parent_id', 'id'); 
    } 

    public function parent_category() 
    { 
     return $this->hasMany(self::class, 'id', 'parent_id'); 
    } 


} 

マイビュー(index.blade.php):

@foreach($categories as $category) 
     <div class="col-md-8"> 
     <div class="panel panel-primary"> 
      <div class="panel-heading"><i class="fa fa-angle-right" aria-hidden="true"></i> {{ $category->caption }}</div> 
      <div class="panel-body"> 



     @foreach($category->sub_category as $sub_category) 

       <div class="row forum-row"> 

        <div class="col-xs-12 col-md-8 col-sm-8"> 

        <div class="hidden-xs visible-sm visible-lg visible-md pull-left forum-icon-read"> 
        <i class="fa fa-comment"></i> 
        </div> 
        <a href="#">{{ $sub_category->caption }}</a><br> 
        <small>{{ $sub_category->desc }}</small> 

        </div> 

        <div class="col-xs-12 col-md-4 col-sm-4 forum-latest-container"> 
        <p class="forum-data cutoff"><a href="#">Test</a></p> 
        <small> 
        door <a class="Donateur" href="/user-Sygun">Sygun</a> 
        <p class="forum-data"> 
        2 minuten geleden </p> 
        </small> 
        </div> 

       </div> 
       @endforeach 


      </div> 
     </div> 
     </div> 
     @endforeach 

私はまた、2つのデータベースのテーブルがあります。

  • Sub_categories(ID、キャプション、PARENT_ID、min_rank、DESC)

  • カテゴリ(ID、字幕、分/ランク、降順)

私が取得エラーメッセージ:

foreachのために供給無効な引数()

あなたはこれを達成するための正しい方法は何か教えてもらえますか?

+0

あなたのDB 'Sub_categories'と' Categories'には2つのテーブルがありますか? –

+0

はい私は@AmitGuptaを持っています – Sygun

+0

'$ category-> sub_category'は配列ですか? ( 'var_dump($ category-> sub_category);で内部ループの前に)ベリファイする - おそらく' $ category'を代わりにループしたいのですか? – Qirel

答えて

0

CategorySubCategoryの2つのモデルを作成します。サブカテゴリモデル

public function parent_category() 
{ 
    return $this->belongsTo('App\Category', 'parent_id'); 
} 

カテゴリーモデルで

public function subcategories() 
{ 
    return $this->hasMany('App\SubCategory', 'parent_id'); 
} 

その後、あなたのコントローラのクエリでそれが好き:

$categories = Category::with('subcategories')->get(); 
を、うまくいけば、あなたの foreachは動作します。ビュー

@foreach($categories as $category) @foreach($category->subcategories as $subcategory) {{$subcategory->caption}} @endforeach @endforeach

そして、あなたはサブカテゴリモデルを作成してくださいオン

+0

残念ながら、私はまだ同じエラーが発生します。あなたの意見にデータベース構造がどのようにあるべきですか?だから、テーブルの名前はどうすればいいですか?列名の中で何かを変更する必要がありますか? – Sygun

+0

'dd($ categories)'と出力を表示します。 –

+0

どこにその機能を置く必要がありますか?どのファイルですか? @AmitGupta – Sygun

0

Categoryモデル

public function subcategories(){ return $this->hasMany('SubCategory', 'parent_id'); }

関連する問題