2017-01-24 25 views
0

私は特定のカテゴリに属する​​すべての製品を入手したいと思います。 私は最大3つのレベルを持つことができるカテゴリのテーブルを持っています。カテゴリの子供と孫のIDを取得するにはどうすればいいですか?laravel

->grandparent category 
------>Parent category 
-------------> Child category 

私はこれらのカテゴリ(category_idフィールド)のいずれかに該当することができた製品のテーブルを持っています。製品category_id製品category_idフィールドは、祖父母の子である親カテゴリに一致する祖父母カテゴリ

  • に一致する

    • :私は祖父母のカテゴリを選択した場合、私はそのようなことをすべての製品を取得できるようにしたいと思いますカテゴリー。
    • 製品category_idフィールドは、親カテゴリーの子である子カテゴリである子カテゴリ(祖父のカテゴリの )と一致します。

    私は次のコードを持っている:

    $category = Category::select('id') 
        ->where('parent_id', $category->id) 
        ->orWhere('id', $category->id) 
        ->get(); 
    

    結果は、私はその製品のテーブルを照会するために使用するIDが一覧です。このコードで問題になるのは、それが1つ下の階層(つまり、祖父母とその下にある親)だけになります。

    くらい

  • 答えて

    0

    に感謝すべてのヘルプあなたは "再帰" 機能試すことができます。

    <?php 
    
    namespace App\Models; 
    
    use Illuminate\Database\Eloquent\Model; 
    
    class Grandparents extends Model { 
    
        protected $table = 'your table'; 
    
        protected $with = [ 'children' ]; 
    
        protected $visible = [ 'id', 'children' ]; 
    
        public function children() { 
        return $this->hasMany(Grandparents::class, 'parent_id', 'id')->with('children'); 
        } 
    } 
    

    をそして結果がOKかどうか確認してください:

    print_r(\App\Models\Grandparents::where('id', '=', 1000)->get()->toArray()); 
    

    よろしく、 ルーカス

    関連する問題