我正在構建一個類似Twitter的應用程序,其中包含一個Feed。在這種飼料,我需要這個屬性來顯示股:Laravel - 合併兩個查詢?
從用戶-Shares,我是誰的用戶,這是由正面的評級分類如下
-Shares,但只有TOP10%
這兩個查詢我需要以某種方式合併,所以它將成爲一個數組在最後,它具有適用於此標準的所有股份,沒有任何重複和按ID排序,desc
我的表看起來像這個:
User, Shares, Follows
Shares:
-user_id
-positive
Follows:
-follower_id
-user_id
-level
我已經嘗試過:
$follower_shares = Share::join('follows', 'shares.user_id', '=', 'follows.user_id')
->where('follows.follower_id', Auth::user()->id)
->where('follows.level', 1)
->get(array('shares.*'));
//count = 10% of total shares
$count = Share::count()/10;
$count = round($count);
$top10_shares = Share::orderBy('positive', 'DESC')
->take($count)
->get();
//sorts by id - descending
$top10_shares = $top10_shares->sortBy(function($top)
{
return -($top->id);
});
//merges shares
$shares = $top10_shares->merge($follower_shares);
的問題是現在,我被告知,沒有解決這個更好的方法。 此外,$股給我的結果適用於標準,但股票有重複(行,這是適用於這兩個標準),並沒有按id desc總共排序。
我會很高興,如果你能告訴我,如何以正確的方式做到這一點。
非常感謝!
廣東話,只是你一個不同的檢查某處那裏沒有得到重複?或者在陣列上運行一個array_unique後.....也許我完全誤解你,但如果是這樣......只是不理我:) – KyleK
array_unique是值得一試:)謝謝 –
哦實際上$股是一個對象... –