首頁 > 後端開發 > php教程 > 如何在 Laravel 中使用「orderBy」訂購相關模型?

如何在 Laravel 中使用「orderBy」訂購相關模型?

Mary-Kate Olsen
發布: 2024-11-29 06:11:10
原創
614 人瀏覽過

How to Order Related Models in Laravel Using `orderBy`?

在 Laravel 中排序關係

檢索一組相關模型時,以特定方式對它們進行排序通常很有用。在 Laravel 中,這可以使用 orderBy 方法來實作。

排序HasMany 關係

考慮以下場景,其中您循環遍歷特定帖子的作者發布的所有評論:

foreach($post->user->comments as $comment) {
    echo "<li>" . $comment->title . " (" . $comment->post->id . ")</li>";
}
登入後複製

此程式碼將顯示以下列表comments:

I love this post (3)
This is a comment (5)
This is the second Comment (3)
登入後複製

要依照帖子ID 對評論進行排序,請擴充User 模型中的hasMany關係:

public function comments()
{
    return $this->hasMany('Comment')->orderBy('column');
}
登入後複製

將 column 替換為您要排序的欄位的名稱。在本例中,我們將使用id:

public function comments()
{
    return $this->hasMany('Comment')->orderBy('id');
}
登入後複製

這會將評論的順序更新為:

I love this post (3)
This is the second Comment (3)
This is a comment (5)
登入後複製

使用查詢參數排序

中除了對關係中的順序進行硬編碼之外,您還可以基於查詢參數進行排序。為此,請在您的routes.php檔案中定義一個路由:

Route::get('users/{user}/comments', 'UserController@index');
登入後複製

然後在您的UserController中建立對應的索引方法:

public function index($user)
{
    $column = Input::get('orderBy', 'defaultColumn');
    $comments = $user->comments()->orderBy($column)->get();

    // ...
}
登入後複製

當您使用orderBy參數,評論將相應地排序。例如,存取以下 URL 將按created_at 欄位對評論進行排序:

http://localhost/users/1/comments?orderBy=created_at
登入後複製

以上是如何在 Laravel 中使用「orderBy」訂購相關模型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板