2015-05-29 99 views
2

我想查詢使用與訪問者與 getNameAttribute的關係,這是我的代碼Laravel getRelations()返回空白

<?php namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Conference extends Model{ 

    public function getNameAttribute() { 
     return $this->getRelation('event')->name; 
    } 

    public function event() { 
     return $this->belongsTo('App\Event'); 
    } 

    public function speakers() { 
     return $this->hasMany('App\Speaker'); 
    } 
} 

但它returnin什麼..我是不是錯誤? 謝謝!

回答

2

當您請求關係event時,此關係尚未加載,這就是爲什麼您會獲得空值。如果您要訪問的event關係只是這樣做$this->event將加載它,這樣你就可以訪問它的屬性:

public function getNameAttribute() { 
    return $this->event->name; 
} 

getRelation方法將返回給你的關係,如果它是在模型已經加載,它將不會觸發加載。

+0

哦,哇,這很容易,它如何獲得該事件?通過雄辯的ORM? – Notflip

+2

@Notflip是的,它觸發了雄辯的魔法'__get'方法。你可以查看[文檔](http://laravel.com/docs/5.0/eloquent)它有很多很酷的技巧和提示。 – shaddy

+0

這更容易,然後我無法想象!謝謝 – Notflip

1

您想改爲使用getRelationValue

public function getNameAttribute() { 
    return $this->getRelationValue('event')->name; 
} 

如果尚未加載關係,則此方法將加載該關係。