1
我有一個模型tasks
與完成任務與datetime
在過去和即將到來的任務與datetime
在未來。Laravel查詢生成器:如何按日期排序結果 - 先按未來日期的升序排序,然後按過去日期的降序排序。
在檢索任務時,我想顯示按升序排列即將到來的任務(從現在到未來)以及過去按降序排列(從現在到過去)的任務。
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...
}
,如果我只檢索futureTasks或pastTasks沒有array_merge,我得到所需的輸出。
public function getTasks()
{
$futureTasks = Task::whereDate('datetime', '>', Carbon::now())->orderBy('datetime', 'asc')->get();
$response = ['tasks' => $futureTasks];
// return...
}
我在這裏做錯了什麼?非常感謝您的時間。
完美的作品。就像你建議的那樣,我也切換到了「where」而不是'whereDate',以便不僅僅是一天的幾分鐘和幾秒鐘。非常感謝@Sandeesh。 – anonym
@anonym沒問題:) – Sandeesh