Laravel:使用 orderBy 對關係進行排序
在 Laravel 中處理關係時,以特定方式對結果進行排序可能很有用。例如,您可能想要按時間順序顯示與貼文相關的評論。
考慮以下循環,它會迭代特定帖子的作者發布的所有評論:
foreach($post->user->comments as $comment) { echo "<li>" . $comment->title . " (" . $comment->post->id . ")</li>"; }
此循環可能會產生如下輸出:
I love this post (3) This is a comment (5) This is the second Comment (3)
要按post_id 對清單進行排序,您可以將評論關係擴展為orderBy函數:
public function comments() { return $this->hasMany('Comment')->orderBy('column'); }
現在,當您循環瀏覽評論時,它們將以所需的順序顯示:
This is the second Comment (3) I love this post (3) This is a comment (5)
或者,您可以使用更靈活的方法orderBy 函數作為輸入,類似Input::get() 輸入檢查範例:
class User { public function comments() { return $this->hasMany('Comment'); } } class Controller { public function index() { $column = Input::get('orderBy', 'defaultColumn'); $comments = User::find(1)->comments()->orderBy($column)->get(); // use $comments in the template } }
透過傳遞orderBy列作為輸入,您可以根據使用者輸入動態對評論進行排序。請記住出於安全目的實施適當的輸入檢查。
以上是如何在 Laravel 排序 Eloquent 關係?的詳細內容。更多資訊請關注PHP中文網其他相關文章!