Laravel:如何从多层次类别中获取产品

时间:2019-07-18 21:28:21

标签: laravel tree categories

我正在查看代码,意识到我正在使用数组。

这是我从多层次类别中获取产品的方式:

    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多种我认为会充斥RAM的产品一起使用。

如果不使用数组,我无法使用查询生成器执行此过程?

0 个答案:

没有答案