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 を使用してコメント関係を拡張できます。 function:
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)
あるいは、より柔軟な方法を使用することもできます。 input::get() 入力チェックの例と同様の、orderBy 関数を入力として使用します。
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 で雄弁な関係を命令するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。