2016-08-01 103 views
0

嗨,我有一個表與外部類別的自己,其中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']??))); 

首先$類別shouild回到我的類別陣列和第二陣列子類別,我需要調整數組$類的每個對象的ID給每個子類陣列。這是可能的還是其他方式?

+0

我想你可能想看看IN()語法 – RiggsFolly

回答

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父類,而不是爲不是一個正確的類ID。

相關問題