2015-07-19 38 views
0

我的要求是使用數據庫值構建樹視圖。如何使用laravel將數據從數據庫檢索到樹視圖

這裏是我的數據庫表:

| Categories | |sub_categories | 
|  id(pk)  | | id(pk)  | 
| cate_name  | | sub_cat_name | 
| route_name  | | route_name  | 
        |Categories_id(fk)| 

我得到類別子類別以及其相關的類別表。

這裏是我的控制器代碼:

$treeView = DB::table('categories') 
       ->join('sub_categories', 'sub_categories.categories_id', '=', 'categories.id') 
       ->get(); 

這裏是在* .blade.php HTML結構:

@foreach($treeView as $tv) 
       <li class="treeview"> 
        <a href="#"><i class="fa fa-link"></i> <span>{{ $tv->category_name }}</span> <i 
           class="fa fa-angle-left pull-right"></i></a> 
        <ul class="treeview-menu"> 
         <li class=""><a href="#">{{$tv->sub_category_name}}</a></li> 
         <li><a href="#">Update Article</a></li> 
        </ul> 
       </li> 
      @endforeach 

不過,這並不正常工作。它一次又一次地給出相同的主要類別。 任何人都可以提出一個正確的方式來檢索數據?

+0

你使用雄辯嗎?什麼是型號名稱? –

+0

不..我沒有使用雄辯......我正在使用** Illuminate \ Support \ Facades \ DB **。 – PereraSH

+0

我有我自己的數據庫..所以我不使用雄辯.. – PereraSH

回答

3

我建議你使用Eloquent,因爲它會使代碼更簡單,並且將來會讓你的生活更輕鬆。

爲您的表創建模型類:

class Category extends Illuminate\Database\Eloquent\Model { 
    protected $table = 'Categories'; 

    public function subcategories() { 
    return $this->hasMany(Subcategory::class, 'Categories_id'); 
    } 
} 

class Subcategory extends Illuminate\Database\Eloquent\Model { 
    protected $table = 'sub_categories'; 

    public function category() { 
    return $this->belongsTo(Category::class, 'Categories_id'); 
    } 
} 

在控制器中獲取這樣的數據:

$treeView = Category::with(['subcategories'])->get(); 

然後在視圖:

@foreach($treeView as $category) 
    <li class="treeview"> 
    <a href="#"><i class="fa fa-link"></i> <span>{{ $category->cate_name }}</span> <i class="fa fa-angle-left pull-right"></i></a> 
    <ul class="treeview-menu"> 
     @foreach($category->subcategories as $subcategory) 
     <li class=""><a href="#">{{$subcategory->sub_category_name}}</a></li> 
     @endforeach 
    </ul> 
    </li> 
@endforeach 

我可以看到,您的類別和子類別具有相同的結構。您可能會考慮將它們存儲在同一個表中,只需將一個parent_id字段添加到該表中,並將其設置爲NULL,然後將其設置爲父類別和子類別的父級ID。

+0

感謝您的快速回復..我嘗試使用您的代碼示例。但它給了我錯誤**在Builder.php中的錯誤** BadMethodCallException 2003:調用未定義的方法Illuminate \ Database \ Query \ Builder :: all()** – PereraSH

+0

我創建了** Category **和** Subcategory **類**應用程序/ **目錄,因爲你提到... – PereraSH

+0

它應該得到,而不是全部。更新了答案 –

相關問題