2014-10-11 66 views
0

我在玩Laravel,我有這個代碼。它根據提供的用戶名返回所有用戶帖子。Laravel雄辯地抓住用戶訂購的帖子

控制器

$posts = User::whereUsername($username)->firstOrFail()->posts; 

return View::make('users.index')->with($posts); 

查看

@foreach($posts as $post) 

     {{ $post->title }} 
     {{ $post-owner->username }} 
     // etc etc 

@endforeach 

我怎麼會去添加orderBy()到我的查詢?我希望帖子按照最新的順序排列。這是我嘗試:(

User::whereUsername($username)->firstOrFail()->posts->orderBy('created_at', 'DESC'); 

還是有更好的方式去這樣做呢?

編輯

用戶模型

public function posts() 
{ 
    return $this->hasMany('Post'); 
} 

日誌模型

public function owner() 
{ 
    return $this->belongsTo('User', 'user_id'); 
} 
+0

一切括號看起來很不錯!有什麼錯誤? – Oni 2014-10-11 04:41:29

+0

'firstOrFail'應該返回一個'User'模型,如果它找到了一個或者'ModelNotFoundException',如果它找不到任何東西 – Oni 2014-10-11 04:44:40

+0

這是錯誤'調用未定義的方法Illuminate \ Database \ Eloquent \ Collection :: orderBy() ' – Staysee 2014-10-11 04:46:51

回答

0

您的代碼稍微缺少關係中的()括號!

試試這個

User::whereUsername($username) 
->firstOrFail() 
->posts() 
->orderBy('created_at', 'DESC') 
->get(); 

註上posts()->

+0

感謝您的回覆。不幸的是,添加'()'將我的瀏覽器加載到緩衝區並且選項卡崩潰。 – Staysee 2014-10-11 04:32:47

+0

你可以用你的'用戶'模型編輯你的問題嗎?你應該在'User'模型上定義你的關係。之後,關係方法應該返回一個對象,在該對象中可以鏈接您的流利查詢。 – Oni 2014-10-11 04:35:40

+0

如果你可以在github或其他地方發佈你的代碼,我會非常樂意幫助你! :D – Oni 2014-10-11 04:36:07