【问题标题】:How to get data from previous record in laravel如何从laravel中的先前记录中获取数据
【发布时间】:2018-11-28 07:44:26
【问题描述】:

我有一张名为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的记录或数量是来自Nov 16的记录。

输出(作为数组)
11 月 12 日至 16 日:
[7, 5, 6, 8, 12]

11 月 26 日至 30 日:
[12, 8, 9, 10, 13]

Nov 26 - 30数组的第一项应该是12,因为它是Nov 12 - 16之前的数据。

支持图片:

结果必须是动态的;一旦有一天没有记录,就会填上最后一条记录。

【问题讨论】:

  • 我假设您希望其他人帮助修改 arrayAssigner 以返回特定结果,对吧?在这种情况下,我建议您提供输入和当前输出以及预期输出的示例
  • @YohanesGultom 请查看更新。

标签: php laravel


【解决方案1】:
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;
}

这是你想要的吗???

【讨论】:

  • 不是我想要的。如果'Mon'没有记录怎么办? 'Mon' 应该得到它之前的最后一条记录(例如 11 月 23 日或在 'Mon' 之前有记录的其他日期)。
  • 是的,我知道...你能说说上周的记录在哪里吗???
  • 我的意思是你在$theArrayData 中发送的内容是不是像[ '26/11/2018', '27/11/2018', ... , '30/11/2018' ] ???
猜你喜欢
  • 2017-02-09
  • 2019-07-18
  • 1970-01-01
  • 1970-01-01
  • 2019-04-25
  • 2013-06-14
  • 2018-04-06
  • 2020-06-16
  • 1970-01-01
相关资源
最近更新 更多