如何从Laravel中的先前记录中获取数据

时间:2018-11-28 07:44:27

标签: php laravel

我有一个名为items的表。现在,我将获得本周的所有记录(平均每天记录)。我已经做到了。

但是问题是,如果没有记录,比如说星期三,则星期三的数据仍然应该是星期二或星期三之前的日期。请在下面查看我的代码。

public function arrayAssigner($theArray, $theArrayData, $field)
{
    $format_to_day = function($date){
        return date_format(new \DateTime($date), 'D');
    };

    foreach($theArray as $key => $value){
        if(isset($theArrayData[$key]) && $format_to_day($theArrayData[$key]['created_at']) == 'Mon'){
            $theArray[0] = $theArrayData[$key][$field];
        } elseif (isset($theArrayData[$key]) && $format_to_day($theArrayData[$key]['created_at']) == 'Tue'){
            $theArray[1] = $theArrayData[$key][$field];
        } elseif (isset($theArrayData[$key]) && $format_to_day($theArrayData[$key]['created_at']) == 'Wed'){
            $theArray[2] = $theArrayData[$key][$field];
        } elseif (isset($theArrayData[$key]) && $format_to_day($theArrayData[$key]['created_at']) == 'Thu'){
            $theArray[3] = $theArrayData[$key][$field];
        } elseif (isset($theArrayData[$key]) && $format_to_day($theArrayData[$key]['created_at']) == 'Fri'){
            $theArray[4] = $theArrayData[$key][$field];
        }
    }

    return $theArray;
}

我这样使用它:

$theArray = [0, 0, 0, 0, 0];
$this->arrayAssigner($theArray, $dataOfTheWeek, 'quantity');

我还有一个构造函数,可以将WeekStart设置为 MONDAY

示例

假设我有一个来自Nov 12 - 16的记录。现在,当前星期是Nov 26-30,但是在数据库中我没有关于Nov 26的记录,这意味着,记录Nov 26或数量是{{ 1}}。

输出(作为数组)
11月12日-16日
Nov 16

11月26日至30日:
[7, 5, 6, 8, 12]

[12, 8, 9, 10, 13]数组中的第一项应该为12,因为它是Nov 26 - 30的先前数据。

支持图片:

enter image description here

结果必须是动态的;有一天没有记录时,它将填充最后一条记录。

1 个答案:

答案 0 :(得分:0)

public function arrayAssigner($theArray, $theArrayData, $field) {

    $format_to_day = function($date){
        return date_format(new \DateTime($date), 'D');
    };

    foreach($theArray as $key => $value) {
        if(isset($theArrayData[$key])) {
            $day = $format_to_day($theArrayData[$key]['created_at']);

            switch ($day) {
                case 'Mon':
                    $theArray[0] = $theArrayData[$key][$field];
                break;
                case 'Tue':
                    // new_data  = ---if exists ---------------v--- assign ------------------v-- old_data--
                    $theArray[1] = $theArrayData[$key][$field] ? $theArrayData[$key][$field] : $theArray[0];
                break;
                case 'Wed':
                    // new_data  = ---if exists ---------------v--- assign ------------------v-- old_data--
                    $theArray[2] = $theArrayData[$key][$field] ? $theArrayData[$key][$field] : $theArray[1];
                break;
                case 'Thu':
                    // new_data  = ---if exists ---------------v--- assign ------------------v-- old_data--
                    $theArray[3] = $theArrayData[$key][$field] ? $theArrayData[$key][$field] : $theArray[2];
                break;
                case 'Fri':
                    // new_data  = ---if exists ---------------v--- assign ------------------v-- old_data--
                    $theArray[4] = $theArrayData[$key][$field] ? $theArrayData[$key][$field] : $theArray[3];
                break;
                default:
                break;
            }
        }
    }

    return $theArray;
}

这就是你想要的吗?