2016-05-30 43 views
0

我目前正在開發一個帶有checkins的啤酒應用程序。用戶登記代表他/她已喝的啤酒。我現在正在處理當前登錄用戶的登入事宜以及我通過友情列表建立的朋友的登記。如何對這個雄辯的集合進行排序?

我抓住的用戶朋友們的集合和實例的當前登錄的用戶和我一起加入他們,像這樣:

// 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

當你迭代用戶時,只有通過他們的checkins,你看到checkins按用戶分組。爲了能夠按年齡訂購簽到,您需要直接通過簽入進行迭代。

以下應該有所幫助:

// 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方法。尚未在文檔中找到它。非常感謝! –