2016-04-19 6 views
1

3つのコレクションがcontrollerにマージされています。私の問題は、マージされたコレクションをexpiry_dateでソートすることです。Laravelでマージされたコレクションを並べ替える

$expiry = date('Y-m-d', strtotime('+3 months')); 
    $servers = Server::where('expiry_date', '<', $expiry)->orderBy('expiry_date', 'asc')->get(); 
    $domains = Domain::where('expiry_date', '<', $expiry)->orderBy('expiry_date', 'asc')->get(); 
    $hosts = Host::where('expiry_date', '<', $expiry)->orderBy('expiry_date', 'asc')->get(); 
    $invoices = $domains->merge($servers)->merge($hosts); 
+0

モデル。これで、コードを少し整理します: 'Server :: expiresAfter($ threeMonths) - > get()'。 –

答えて

0

、ケースには誰でも似た何かを探しています。私はあなたがあなたの `Server`、` Domain`、と `Host`に適用できることを、` scopeExpiresAfter($クエリ、DateTimeInterface $日付) `メソッドが含まれている形質を作ると思います。ただ、ノート

$servers = DB::table('servers')->select(DB::raw('"Server" as type, servers.id, servers.client_id, servers.expiry_date, servers.name, clients.name as clientName'))->leftJoin('clients', 'servers.client_id', '=', 'clients.id')->where('expiry_date', '<', $expiry); 
    $domains = DB::table('domains')->select(DB::raw('"Domain" as type, domains.id, domains.client_id, domains.expiry_date, domains.name, clients.name as clientName'))->leftJoin('clients', 'domains.client_id', '=', 'clients.id')->where('expiry_date', '<', $expiry); 
    $hosts = DB::table('hosts')->select(DB::raw('"Host" as type, hosts.id, hosts.client_id, hosts.expiry_date, hosts.name, clients.name as clientName'))->leftJoin('clients', 'hosts.client_id', '=', 'clients.id')->where('expiry_date', '<', $expiry)->unionAll($domains)->unionAll($servers)->orderBy('expiry_date', 'asc')->get();   
1

orderBy()は、クエリ内で適切に機能している場合、これはあなたのために働く必要がありますが:

SQLクエリを使用して解決
$expiry = date('Y-m-d', strtotime('+3 months')); 
$servers = Server::where('expiry_date', '<', $expiry)->get(); 
$domains = Domain::where('expiry_date', '<', $expiry)->get(); 
$hosts = Host::where('expiry_date', '<', $expiry)->get(); 
$invoices = $domains->merge($servers)->merge($hosts); 
$invoices->sortBy('expiry_date'); 
+0

'orderBy()'は正常に動作していますが、これは動作しません – dev7

+0

エラーが発生しますか?そうでない場合、正確には何が機能しないのですか? –

+0

'asort()はパラメータ2がlong型であることを期待しています。文字列' ascとエラーなしで試しましたが、ソートされていませんでした。 – dev7

関連する問題