2017-05-29 110 views
0

我的應用程序中有類別表,它工作得很好,但我想知道如何獲得子類別?將子類別添加到laravel 5.4

目前我有什麼是:

類別型號

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Category extends Model 
{ 

    protected $fillable = ['name']; 

    public function ads(){ 
    return $this->hasMany(Ad::class); 
    } 

} 

類別遷移:

public function up() 
    { 
     Schema::create('categories', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('name'); 
      $table->string('slug')->unique(); 
      $table->timestamps(); 
     }); 
    } 

我的帖子型號:

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

PS:我知道我有製作新標籤le和呼籲category_id的外鍵的子類別,但是讓我迷惑的是關係,以及如何在前端選擇它們,因此類別和子類別都顯示在一個下拉菜單中(如WP)?

回答

2

我真不明白好你想要做什麼..但如果你想添加一個下拉雙方類別和子類別我想這是你想要的東西:

讓我們說你已經做的關係。在您的控制器

$categories = Category::with('sub_categories')->get(); 
return view('page',compact('categories')); 

現在我們得到了所有的類別和它的相應的子類別。在刀片所有你需要做的就是

<select name="categories"> 
@foreach($categories as $categ) 
    <optgroup label="{{ $categ->name }}"> 
     @foreach($categ->sub_categories as $sub) 
      <option value="{{ $sub->id }}">{{ $sub->name }}</option> 
     @endforeach 
    </optgroup> 
@endforeach 
</select> 

,並且會給你喜歡

<select> 
 
    <optgroup label="Fruits"> 
 
    <option value="1">Apple</option> 
 
    <option value="2">Banana</option> 
 
    </optgroup> 
 
    <optgroup label="Vegetables"> 
 
    <option value="3">Beans</option> 
 
    <option value="4">Cabbage</option> 
 
    </optgroup> 
 
</select>

編輯

關係是很容易理解爲英文輸出..其實你已經在做了你類廣告..

分類模型

public function ads() 
{ 
    return $this->hasMany('App\Ad'); 
    // return $this->hasMany('App\Ad','theforeignfieldtocomparetomyprimarykey') 
} 

hasMany - 這意味着廣告模式有category_id在它的數據庫表中的字段..

AD模型

public function category() 
{ 
    return $this->belongsTo('App\Category'); 
    // return $this->belongsTo('App\Category','myfieldtocompare'); 
} 

belongsTo - 由於函數名是category它會查找在他的領域爲category_id,並匹配到primary keymodel category

所以基本上你首先要做的就是製作遷移類型:

類別

  • ID

子類別

  • ID
  • CATEGORY_ID

然後在你的模型,你應該有一個腳本,如上所示例..

+0

'讓我們假設你已經做的關係。在你的controller'正如我說'什麼讓我迷惑的是relationships'。 – djhru

+0

已更新我的回答,這樣你就可以瞭解關係.. – Demonyowh

+0

嗨,我做了它的工作,但如何從前端添加選定類別的子類別?現在我可以得到貓和貓的列表,但將它們彼此連接並保存? – djhru