簡體   English   中英

如何通過一列獲取兩個對象數組

[英]How to get two arrays of obiects by one column

嗨,我在桌子上有自己的外鍵類別,其中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應該向我返回類別數組,第二個返回具有子類別的數組,我需要將$ category數組的每個對象的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();

這將為您提供所有父類別的列表,其中每個父類別都具有存儲所有子類別的subcategories屬性。 您可以通過以下方式遍歷它們:

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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM