2016-06-17 1 views
0

У меня есть таблица Mysqlрекурсивная функция не возвращает всех детей в Laravel 5

My table screenshot

Это моя модель

namespace App; 
use Illuminate\Database\Eloquent\Model; 
class Categories extends Model { 
    protected $table = 'category'; 
    protected $fillable = ['category_name', 'parent_id', 'category_level', 'last_level', 'description', 'category_image']; 
    protected $guarded = ['id']; 
    public function parent() 
    { 
     return $this->belongsTo('App\Categories', 'parent_id'); 
    } 
    public function children() { 
     return $this->hasMany('App\Categories','parent_id'); 
    } 
} 

и это мой контроллер метод

public function create() { 
    $parentCategory = Categories::all(); 
    return view('admin.add_category')->with('parentCategory', $parentCategory); 
} 

Я хочу это получить Результат

Result screenshot

Как это возможно?

EDIT

И это мой Вид:

<select name="category_id" id="p_category_id" class="form-control"> 
    <option selected="selected" value="">Select Cateory</option> 
    <option selected="" value="">Category</option> 
    @foreach ($parentCategory as $category) 
     @foreach ($category->children as $child) 
      <option value="{{ $category->id }}" placeholder="choose parent category">{{ $child->category_name }}</option> 
     @endforeach           
    @endforeach 
</select> 

Я хочу, чтобы этот результат:

Category 
Bangladesg 
----Dhaka 
---------Mirpur 
---------------Senpara 
---------Mohammadpur 
----Rangpur 
+0

@Epodax Не видел, что в обзоре , посмотрим – Draken

ответ

0

Вы должны будете создать специальный метод для достижения этой цели. Потому что то, что вы хотите сделать, - это список всех детей и детей детей и т. Д. Это не сработает с 1 циклом foreach (или, не, как петля foreach, как у вас сейчас). Вы можете хардкор foreach петли в петлях foreach, но это уродливый код, а затем вы жестко кодируете максимальные уровни категорий.

Метод, который вы должны создать, должен быть методом саморегуляции, поэтому вы можете иметь столько категорий детей, сколько хотите.

Может быть, вы должны попробовать некоторые пакеты, которые делают работу для Вас и легко осуществить:

https://github.com/gazsp/baum

или

https://github.com/lazychaser/laravel-nestedset

Смежные вопросы