2016-05-30 68 views
0

我有一對多的關係,當使用關係作爲查詢屬性時完美工作,但是當我嘗試使用它作爲方法時,它總是返回空。雄辯的關係查詢構建方法返回空

用戶模型

public function reports() 
{ 
    return $this->hasMany('App\Report', Report::COL_USER_ID, self::COL_ID); 
} 

報表模型

public function user() 
{ 
    return $this->hasOne('App\User', User::COL_ID, self::COL_USER_ID); 
} 

這個作品

$reports = User::find($id)->reports; 

這不,我需要這樣的

$reports = User::find($id)->reports()->orderBy(Report::COL_CREATED_AT, self::ORDER_BY_DESC); 

按照雄辯的文檔「因爲所有的關係也可以作爲查詢生成器,您可以添加更多的約束」,因此應該完全可以獲取適當的數據,我錯過了什麼?在此先感謝您的幫助

回答

1

您需要使用get方法來獲得實際效果,所以你應該使用:

$reports = User::find($id)->reports()->orderBy(Report::COL_CREATED_AT, self::ORDER_BY_DESC)->get(); 

,而不是隻:

$reports = User::find($id)->reports()->orderBy(Report::COL_CREATED_AT, self::ORDER_BY_DESC); 

在你的情況,你只創建查詢,並沒有從數據庫中得到任何結果。這就是爲什麼你沒有得到任何結果。

而且理由:

$reports = User::find($id)->reports; 

作品是因爲它的快捷方式:

$reports = User::find($id)->reports()->get(); 

如果您嘗試使用:

$reports = User::find($id)->reports(); 

只有你不會得到任何結果也是。

+0

謝謝!有一種感覺是荒謬的:/ –