如何通过一列获得两个对象数组

时间:2016-08-01 14:06:31

标签: php laravel laravel-5 eloquent

您好我在桌子上有自己的外键类别,其中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调整到每个子类别数组。可能还是有其他方式?

1 个答案:

答案 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。