私はの完全なタスクを持っていて、これからの作業はdatetime
であり、今後の作業はdatetime
です。Laravel Query Builder:日付順に結果を並べ替えるにはどうすればいいですか?まず、将来の日付で昇順で、次に過去の日付で降順でソートしますか?
タスクを取得中に、昇順(現在から未来へ)と過去のタスク(降順)(今から過去)を並べて表示します。
public function getTasks()
{
$futureTasks = Task::whereDate('datetime', '>', Carbon::now())->orderBy('datetime', 'asc')->get();
$pastTasks = Task::whereDate('datetime', '<', Carbon::now())->orderBy('datetime', 'desc')->get();
$tasks = array_merge($futureTasks, $pastTasks);
$response = ['tasks' => $tasks];
// return...
}
私は次のエラーを取得しています:
array_merge(): Argument #1 is not an array
私はarray_push関数の引数の順序を逆にした場合、私はまだ同じエラーを取得します。
public function getTasks()
{
$futureTasks = Task::whereDate('datetime', '>', Carbon::now())->orderBy('datetime', 'asc')->get();
$pastTasks = Task::whereDate('datetime', '<', Carbon::now())->orderBy('datetime', 'desc')->get();
$tasks = array_merge($pastTasks, $futureTasks);
$response = ['tasks' => $tasks];
// return...
}
また、array_mergeを使用せずにfutureTasksまたはpastTasksのみを取得すると、目的の出力が得られます。
public function getTasks()
{
$futureTasks = Task::whereDate('datetime', '>', Carbon::now())->orderBy('datetime', 'asc')->get();
$response = ['tasks' => $futureTasks];
// return...
}
私はここで間違っていますか?あなたのお時間をありがとうございました。
これは完全に機能します。あなたが提案したように、私はちょうどその日ではなく、分と秒でソートするために 'whereDate'ではなく' where'に切り替えました。非常に義務づけられた@Sandeesh。 – anonym
@anonym問題なし:) – Sandeesh