您好我在桌子上有自己的外键类别,其中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 shouild返回我的类别数组和带子类别的第二个数组我需要将数组$ category的每个对象的id调整到每个子类别数组。可能还是有其他方式?
答案 0 :(得分:0)
如果您正确定义模型关系,则可以更好地获取类别及其子类别。
首先定义关系:
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 存储为父类别而不是 0 ,因为 0 不是正确的类别ID。