Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Подскажите как можно реализовать метод для выбора дерева дочерних категорий, и также всего дерева.
Структура БД:
$table->increments('id');
$table->string('name')->unique();
$table->integer('parent_id')->unsigned()->nullable();
$table->timestamps();
Я уже реализовал методы, для проверки существования категории, для проверки наличия дочерних категорий, для проверки наличия родительной категории, для выборки родительной категории, для выборки дочерних категорий(только на один уровень), для выборки всех родительных категорий. И на этом у меня кончилась фантазия , как вообще строиться это дерево?
Изменено Alex5000 (09.01.2016 10:08:16)
Не в сети
из быстрых решений:
- рекурсивный забор данных (1000 элементов = 1000 простых селектов, нет, это не тормоз, даже быстрее пары join'ов), но в принципе ужа давно неправильно.
- показывать уровень. клик по элементу-папке = догрузка внутренностей.
из сложных решений - надо тз читать и проектировать нагрузку из заданной аудитории (кол-во уникалов в 15 минут и в сутки)
Не в сети
Делается один запрос в базу, формируется массив вида
array[parent_id]=['id'=id,'name=name]
Затем рекурсивной функцией обходишь этот массив и строишь дерево. Блин да дофига таких примеров в гугуле.
Вопрос даже к ларавелю отношения не имеет.
Не в сети
Делается один запрос в базу, формируется массив вида
array[parent_id]=['id'=id,'name=name]
Затем рекурсивной функцией обходишь этот массив и строишь дерево. Блин да дофига таких примеров в гугуле.
Вопрос даже к ларавелю отношения не имеет.
Да, к сожалению очень много необразованных людей.
И да пусть нет образования, но алгоритмостроение-то должно присутствовать в голове. Без логического склада ума делать в программировании нечего .
Не в сети
Может кому пригодится.
Модель Category
public static function children($parent=null) {
return Category::where('parent_id',$parent)->orderBy('name','desc')->get();
}
Контроллер
public function add() {
$categories = Category::children(null);
return view('orders.add', compact('categories'));
}
И сам вывод на страницу
<div class="form-group mb-4">
<label for="" class="text-dark">Категория</label>
<select name="" class="form-control select text-dark">
<option value=""></option>
@foreach($categories as $cat)
<option value="{{$cat->id}}">{{$cat->name}}</option>
@foreach($cat->children($cat->id) as $item)
<option value="{{$item->id}}"> -- {{$item->name}}</option>
@foreach($cat->children($item->id) as $item1)
<option value="{{$item1->id}}"> -- {{$item1->name}}</option>
@endforeach
@endforeach
@endforeach
</select>
</div>
Результат примерно таков будет https://ibb.co/cbZ1gZ2
Ну а дальше, если у вас куча под категорий по аналогии делать
Не в сети
https://github.com/lazychaser/laravel-nestedset
Изменено hzone (01.05.2019 20:24:38)
Не в сети
https://github.com/AdrianSkierniewski/eloquent-tree - вроде как на Adjacency List
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Страницы 1