複数のコレクションを1つにマージし、そのコレクションを日時でソートしてコレクション間にタイムラインを作成します。Laravelは複数のコレクションをマージし、対応する日時フィールドでソートします
Heresは、日付と時刻の列を並べ替えるの異なる名前です。
私はこのクリーナーを作るために何かできますか?おそらく->merge
でforeachループを付けますか? foreachループで醜いように見えます。 注:のコードは動作しますが、それは怠け者だと思っていますし、コレクション内のアイテムが増えると遅くなるかもしれません。
// Create timeline, sortby creation datetimes.
$TimelineItems = collect();
$TimelineItems = $Appointments->merge($lead->SalesResult);
foreach ($TimelineItems as $key => $TimelineItem) {
if(!empty($TimelineItem->appointment_created)) {
$TimelineItems[$key]->created_at = $TimelineItem->appointment_created;
}
if(!empty($TimelineItem->salesresult_created_timestamp)) {
$TimelineItems[$key]->created_at = $TimelineItem->salesresult_created_timestamp;
}
}
$TimelineItems = $TimelineItems->sortByDesc('created_at');
dd($TimelineItems);
ありがとうございます。私はあなたのコードを変換してみましたが、それはソートされません。それはコレクションをマージしますが、並べ替えはしません。各コレクションのキーを並べ替えるように見えますが、dd()は適切に並べ替えられません。コレクションを並べるだけです。 – hinteractive02
'20 =>予定{#584▶} 21 =>予定{#585▶} 22 => SalesResult {#532▶} 33 => SalesResult {#543▶} 40 => SalesResult {#550▶ } ' – hinteractive02
アイテムは' created_at'セットになっていますか? –