2016-05-30 2 views
0

私は現在、チェックインのあるビールのアプリケーションに取り組んでいます。ユーザーのチェックインは、飲んだビールを表しています。私は現在、現在ログインしているユーザーのチェックインと友だちテーブルを使って設定した友人のチェックインを処理しています。この雄弁なコレクションをソートするには?

私は、ユーザーの友人のコレクションと現在ログインしているユーザーのインスタンスをつかんていると私はそうのように一緒にそれらを追加してい:私は今ログインしているユーザーの収集とその友人を持っている

// merge the currently logged in user with their friends 
$users = $users->add($user); 

最終的にチェックイン時に何らかのタイムラインを表示したいと考えています。

@foreach($users as $user) 
    @foreach($user->checkins as $checkin) 
     // my code 
    @endforeach 
@endforeach 

私は、すべてのユーザーのチェックインを取得するが、私は出力がチャンク/ユーザーごとにグループ化された取得しています:私の主な問題は、私はこのようなものを使用したい時はいつでもということです。私は実際にタイムラインを作成できるので、ユーザーごとではなく、年齢順に並べ替えることをお勧めします。今度は、ユーザー1のチェックインをすべてブロックし、ユーザー2のチェックインブロックなどをブロックします。

この動作を防止し、最も古いチェックインを単に表示するにはどうすればよいですか?

答えて

1

ユーザーが繰り返し実行しているときにチェックインするだけで、ユーザーごとにチェックインされたチェックインが表示されます。年齢順にチェックインを注文できるようにするには、チェックインを通じて直接反復する必要があります。次

は役立つはず:

// get IDs of users for which you want to show checkins 
$users = $users->add($user); 
$userIds = $users->modelKeys(); 

// load checkins for those users 
$checkins = Checkin::whereIn('user_id', $userIds)->orderBy('created_at', 'desc')->with('user')->get(); 

$チェックイン変数は最初、最新のチェックインで自分の作成日順、チェックインのリストを保持します。各行は対応するユーザをユーザ属性に保持します。

あなたはと今、すべてのチェックインを反復処理することができるはずです。

@foreach($checkins as $checkin) 
    // your code here 
    // user is available in $checkin->user 
@endforeach 

あなたが列/関係の名前と一致するようにコードを適応させる必要があるかもしれませんが、それはあなたにそれを解決するためにどのようにアイデアを与える必要があります。

+0

ありがとうLaravel Jedi。それは完璧なので、これで満足して:)最初に私は途中でmodelKeysメソッドを見ています。まだドキュメントで見つけられていません。本当にありがとう! –