我正在查看代码,意识到我正在使用数组。
这是我从多层次类别中获取产品的方式:
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的产品一起使用。
如果不使用数组,我无法使用查询生成器执行此过程?