2014-07-11 63 views
0

我正在創建類別模型,它有父類別模型本身.. 我做了模型中的關係,並以json格式給出了我的輸出。當我做我正在創建類別模型,它有父類別模型本身

{{ $category->parent }} 

它給了我:

{"id":1,"name":"test","slug":"test","parent_id":0,"is_active":0,"created_at":"-0001-11-30 00:00:00","updated_at":"-0001-11-30 00:00:00"} 

如果我嘗試

{{ $category->parent()->name }} 

它ofcourse給出錯誤。 有關如何獲取父行對象的任何建議,以便$category->parent()->name可以工作。

也在哪種情況下,我們必須在模型中定義表名作爲其工作正常,如果我不太。

=======================分類模型====================

class Category extends Eloquent { 

    protected $fillable = array('name', 'slug', 'parent_id', 'is_active'); 
    public static $rules = array(
     'name' => 'required|min:3', 
     'slug' => 'required', 
    ); 

    public function parent(){ 
    return $this->belongsTo('Category', 'parent_id'); 
    } 

    public function children() { 
     return $this->hasMany('Category', 'parent_id'); 
    } 

} 
+0

您可以嘗試'$ category-> parent-> name'或'$ category-> parent() - > get() - > name' – Razor

+0

@Razor'$ category-> parent-> name'給出'嘗試獲取非對象和$ category-> parent() - > get() - >名稱的屬性給出'Undefined property:Ill uminate \ Database \ Eloquent \ Collection :: $ name' –

+0

你的關係函數是什麼樣的? '{{$ category-> parent}}'不應該輸出整個模型的json。 – user3158900

回答

2

你的一些類別沒有父母,他們是根節點,所以你必須檢查它$category->parent第一,然後訪問它的屬性。

現在,不要使用isset因爲關係設定爲對象上的屬性。而不是使用這樣的:

if (count($category->parent)) // do something 

// or is_null 
if (is_null($category->parent)); 

而且get()返回集合,你要的是first()返回單一的模式。

我建議你閱讀這個答案約遞歸關係,使您的設置更輕鬆的工作: Laravel ORM from self referencing table get N level hierarchy JSON

而且也是這個人,所以你知道爲什麼我建議count,而不是is_null檢查相關的模式: Laravel check if related model exists