【问题标题】:Call to a member function format() on boolean - Laravel在布尔值上调用成员函数 format() - Laravel
【发布时间】:2017-01-23 06:34:54
【问题描述】:

我得到:

"在布尔值上调用成员函数 format() 在 UploadController.php 第 87 行"

这是第 58 到 93 行,其中 87 为粗体:

    set_time_limit(120);
    $now = (new \DateTime)->format('Y-m-d H:i:s');
    $nowYmd = (new \DateTime())->format('Y-m-d');
    foreach ($rows as $row) {
        $deviceLog = [];
        $deviceLog['installation_id'] = $this->parseForNull((int)$row[0]);
        $deviceLog['device_id'] = $devicesSerialToId[$row[1]];
        $deviceLog['2'] = $this->parseForNull($row[2]);
        $deviceLog['3'] = $this->parseForNull($row[3]);
        $deviceLog['4'] = $row[4];
        $deviceLog['5'] = $this->parseForNull($row[5]);
        $deviceLog['6'] = $this->parseForNull($row[6]);
        $deviceLog['7'] = $this->parseForNull($row[7]);
        $deviceLog['8'] = $this->parseBoolean($row[8]);
        $deviceLog['9'] = $this->parseBoolean($row[9]);
        $deviceLog['10'] = $this->parseBoolean($row[10]);
        $deviceLog['11'] = $this->parseForNull(intval($row[11]));
        $deviceLog['12'] = $this->parseForNull($row[12]);
        $deviceLog['13'] = $this->parseForNull($row[13]);
        $deviceLog['14'] = $this->parseForNull($row[14]);
        $deviceLog['15'] = $this->parseForNull($row[15]);
        $deviceLog['16'] = $this->parseForNull($row[16]);
        $deviceLog['17'] = $this->parseForNull($row[17]);
        $deviceLog['18'] = $this->parseBoolean($row[18]);
        $deviceLog['19'] = $this->parseBoolean($row[19]);
        $deviceLog['20'] = $this->parseForNull($row[20]);
        $deviceLog['21'] = $this->parseBoolean($row[21]);
        if (!empty($row[22])) {
            $date = \DateTime::createFromFormat('d-M-y', $row[22]);
            **if($date->format('Y-m-d') != $nowYmd) {**
                continue;
            }
            $deviceLog['last_seen'] = $date->format('Y-m-d');
        } else {
            continue;
        }

我该如何解决这个问题?上传的是一个 csv 文件,日期可以是 null/blanc,也可以是以下格式:23-jan-17。从代码中可以看出,如果 last_seen 日期不是今天,则不​​应将数据放入数据库中。

想法?运行 laravel。

【问题讨论】:

    标签: php datetime boolean laravel-5.3


    【解决方案1】:

    检查 $row[22] 的值。 为空会报错。

    if (!empty($row[22])) {
            $date = \DateTime::createFromFormat('d-M-y', $row[22]);
            if(!$date || ($date && ($date->format('Y-m-d') != $nowYmd))) {
                continue;
            }
            $deviceLog['last_seen'] = $date->format('Y-m-d');
        } else {
            continue;
        }
    

    【讨论】:

    • 我认为你在这里有所作为,但遗憾的是 "if (!empty($row[22]) && $row[22] != '')" 给出了同样的错误。关于如何解决这个问题的任何线索?
    • $row[22] 中的值是多少?
    • 值应该是 17 年 1 月 23 日,或者有时为空。但是如果它没有显示今天的日期等,这个代码应该使它不保存行:)
    • 看来它正在工作,谢谢。如果有什么奇怪的地方会更新,但看起来不错。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    相关资源
    最近更新 更多