[英]Add Dates To Array That Don't Exist In Query Result - Laravel 5
因此,我遇到了障礙。 我希望我能解釋清楚。
我正在創建一個自定義的每周日歷,以顯示給定一周(星期日至星期六)的“任務”。
我有以下代碼,它可以捕獲指定數據范圍內的所有任務(按預期方式工作)。
但是,我想在視圖上顯示7個面板,每個面板代表一周中的某天。 我將在視圖本身的@foreach
進行此操作(我尚未解決)。
問題是,如果一周只有2個任務,例如在周日和周二,我將無法在一周的剩余幾天中在視圖上創建空白面板,而沒有任何任務。
我如何確保所有星期的日期都包含在數組中-即使沒有分配任務也是如此? 或者,還有更好的方法?
在控制器中:
$weekly_tasks = Auth::user()->tasks()->withinDateRange($beginning_of_week, $end_of_week)->get();
foreach ($weekly_tasks as $task) {
$date = new Carbon($task['date']);
$days[$date->toFormattedDateString()][] = $task;
}
return $days;
型號范圍:
public function scopeWithinDateRange($query, $start, $end)
{
return $query->whereBetween('date', [$start->subDays(1), $end]);
}
$days
數組返回以下內容:
{
"Mar 22, 2015": [
{
"id": 1,
"task": "stuff",
"date": "2015-03-22 23:06:23"
}
],
"Mar 24, 2015": [
{
"id": 2,
"task": "more stuff",
"date": "2015-03-22 23:06:23"
}
],
}
數組應返回如下內容:
{
"Mar 22, 2015": [
{
"id": 1,
"task": "stuff",
"date": "2015-03-22 23:06:23"
}
],
"Mar 23, 2015": [
],
"Mar 24, 2015": [
{
"id": 2,
"task": "more stuff",
"date": "2015-03-22 23:06:23"
}
],
"Mar 25, 2015": [
],
"Mar 26, 2015": [
],
"Mar 27, 2015": [
],
"Mar 28, 2015": [
],
}
您可以使用一周中的所有天初始化$ days數組作為指向空數組的鍵,然后將所有任務附加到相應的數組。
我以前從未使用過Laravel,但是一個快速的Google認為我可以在本周初獲得Carbon,並添加FormattedDateString作為鍵。 然后使用-> tomorrow()獲取第二天,然后重復沖洗直到達到本周末為止。 不過,可能有更好的方法,因此只有在遇到問題時才使用此方法。
編輯:假設($ beginning_of_week,$ end_of_week)是Carbon對象:
$days = array();
$iterator = $beginning_of_week;
while ( $iterator->lte($end_of_week)){
$days[$iterator->toFormattedDateString()] = array();
$iterator->addDay();
}
這將初始化您的$ days,然后在您的foreach中跟隨它。
定義周數組(您應該動態定義此數組)和一個空的$ weekly_tasks_data數組。 然后遍歷該數組將數據復制到新數組$ weekly_tasks_data(如果有數據存在的話)。
$week_arr = array("Mar 22, 2015", "Mar 23, 2015", "Mar 24, 2015", "Mar 25, 2015", "Mar 26, 2015", "Mar 27, 2015", "Mar 28, 2015");
$weekly_tasks_data = array();
foreach($week_arr as $k => $v) {
if(array_key_exists($v, $weekly_tasks))
$weekly_tasks_data[$v] = $weekly_tasks[$v];
else
$weekly_tasks_data[$v] = array();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.