如何返回 AllSubSections
(所有级别)的所有 ID
class Section extends Model
{
public function Ads()
{
return $this->hasMany(Ad::class);
}
public function AllSubSections()
{
return $this->SubSections()->with('AllSubSections');
}
public function SubSections()
{
return $this->hasMany(Section::class);
}
public function Parent()
{
return $this->belongsTo(Section::class);
}
}
目前正在做的是:
$section = Section::where('name', 'Properties')->first();
$subSections = $section->AllSubSections;
$subSections->pluck('id')
但它只返回第一个级别而不是所有级别。
最佳答案
这是我带来的:
use Illuminate\Support\Collection;
class Section
{
public function children ()
{
return $this->hasMany(Section::class,);
}
public function parent ()
{
return $this->belongsTo(Section::class);
}
public function getAllChildren ()
{
$sections = new Collection();
foreach ($this->children as $section) {
$sections->push($section);
$sections = $sections->merge($section->getAllChildren());
}
return $sections;
}
}
如您所见,getAllChildren 是一个递归函数。它包含一个遍历 children 部分的循环,该循环将当前子项添加到集合中并再次调用该子项。
然后你可以使用:
$section->getAllChildren()->pluck('id');
您将获得所有 child 的 ID。
我希望我能回答这个问题!
关于php - Laravel 返回后代的所有 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41414434/