嗨,我在一个表中有一个类别,其中parent_id与该表中的id相同。我想要两个对象数组。首先是所在的类别
parent_id=0
其次是子类别。但我不知道如何才能抓住这些子类别。我有这个:
$category= Category::where('parent_id', '=', 0)->get();
dd($category[0]['id']);
$subcategory= Category::where('parent_id', '=', (($category[0]['id']??)));
第一个$category应该返回我的类别数组,第二个带有子类别的数组我需要将数组$categories的每个对象的id调整到每个子类别数组。有可能吗?或者还有其他方法吗?
如果您正确定义了模型关系,您可以以更好的方式获得类别及其子类别。
首先定义关系:
class Category extends Model {
public function parent() {
return $this->belongsTo(Category::class);
}
public function subcategories() {
} return $this->hasMany(Category::class, 'parent_id');
}
您现在可以通过以下方式获取所有父类别及其子类别:
$parents = Category::whereParentId(0)->with('subcategories')->get();
这将为您提供所有父类别的列表,每个父类别都将具有子类别属性,该属性将存储所有子类别。您可以通过以下方式遍历它们:
foreach ($parents as $parent) {
printf("Parent category %s'n", $parent->name);
foreach ($parent->subcategories as $subcategory) {
printf("Subcategory %s'n", $subcategory->name);
}
}
小建议:将parent_id设为NULL,并将NULL存储为父类别,而不是0,因为0不是正确的类别id。