Laravel: как получить товары из многоуровневой категорииPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Laravel: как получить товары из многоуровневой категории

Сообщение Anonymous »

Я просмотрел свой код и понял, что работаю с массивами.

Вот как я получаю товары из многоуровневой категории:

Код: Выделить всё

    public function childs()
{
return $this->hasMany(self::class, 'parent_id')->whereColumn('id', '!=', 'parent_id');
}

public function descendants()
{
$descendants = [];

foreach ($this->childs as $category)
{
array_push($descendants, $category);
$descendants = array_merge($descendants, $category->descendants());
}

return $descendants;
}

public function treeProducts()
{
$categories = [$this];
$categories = array_merge($categories, $this->descendants());

$ids = [];

forEach($categories as $category)
{
array_push($ids, $category->id);
}

return Product::whereIn('category_id', $ids);
}
Вызов TreeProducts позволит получить продукты из каждого поддерева. Но проблема в том, что я храню категории и продукты в массивах, а работа с более чем 500 продуктами, думаю, заполнит оперативную память.

Я не могу выполнить этот процесс с помощью Query. Строитель без использования массивов?

Подробнее здесь: https://stackoverflow.com/questions/571 ... l-category
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»