関連モデルのセットを取得する場合、特定の方法でそれらを順序付けすると便利なことがよくあります。 Laravel では、これは orderBy メソッドを使用して実現できます。
特定の投稿の作成者によって投稿されたすべてのコメントをループする次のシナリオを考えてみましょう。
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)
Toコメントを投稿 ID で並べ替え、User モデルの hasMany 関係を拡張します。
public function comments() { return $this->hasMany('Comment')->orderBy('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)
In関係内の順序をハードコーディングするだけでなく、クエリ パラメーターに基づいて順序を指定することもできます。これを行うには、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
以上が「orderBy」を使用してLaravelで関連モデルを注文する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。