Неопределенное свойство: stdClass :: $ id error - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь добавить записи imagename и imagepath в базу данных mysql всякий раз, когда я загружаю новое изображение, однако я получаю следующие ошибки:

undefined property: stdClass::$id in C:\Service\ChallengeService.php on line 184
undefined property: stdClass::$id in C:\Service\ChallengeService.php on line 188

Я реплицировал функцию, которая также сохраняетизображения в том же порядке, что и в аналогичных полях, и я просто использовал эту функцию, поэтому я не знаю, почему она выдает ошибку.

Эта функция обновляет мою базу данных:

public function updateChallengeImage($challenge) {
        try {
            $query = "update challenges
                            set image = :image
                                ,image_file_name = :image_file_name
                      where      
                        id = :id";
            $values = array(
                ":image" => $challenge->image,
                ":image_file_name" => $challenge->image_file_name,
                ":id" => $challenge->id
            );
            $stmt = $this->db->prepare($query);
            $stmt->execute($values);
            return $challenge->id;
        } catch (PDOException $e) {
            $this->logger->error("PDO: ".$e->getMessage(), ["class"=>get_class($this),"method"=>__METHOD__]);
            return -1;
        }
    }

Почему не передается переменная $ id?У меня также появляется это предупреждение в моих журналах:

PHP:WARNING Creating default object from empty value in `C:\\classes\napify\Controller\ChallengesController.php on line 106`

Однако моя функция контроллера выглядит нормально, она должна загружать идентификатор из базы данных:

public function saveChallengeImage($request, $response, $args) {
        $files = $request->getUploadedFiles();
        $data = $request->getParsedBody();
        $valid = true;
        if (!(Utils::isImage($files['image']->file))) {
            $this->flash->addMessage('message', 'Las imagenes no deben superar los 700kb ');
            $this->flash->addMessage('error', 1);
            $valid = false;
        }
        if ($valid) {
            $challenge = $this->ChallengeService->getChallenge(filter_var($data['challenge_id'], FILTER_SANITIZE_STRING));
            $challenge->image_file_name = $files['image']->getClientFileName();
            $challenge->image = $this->saveFile($files['image']);
            $this->ChallengeService->updateChallengeImage($challenge);
            $this->flash->addMessage('message', 'Se guardó la imagen.');
        }

Функция getChallenge, котораявызывается на контроллере.

 public function getChallenge($id) {
        try {
            $query = "select
                         c.id
                        ,c.title
                        ,c.description
                        ,c.active
                        ,c.start_date
                        ,c.end_date
                        ,c.image
                        ,c.image_file_name
                        ,c.color1
                        ,c.color2
                        ,c.color3
                        ,c.color4
                    from 
                        challenges c
                    where
                        id = :id";
            $values = array(
                ":id" => $id
            );
            $stmt = $this->db->prepare($query);
            $stmt->execute($values);
            $stmt->setFetchMode(PDO::FETCH_CLASS, 'napify\Model\Challenge');
            return $stmt->fetch();
        } catch (PDOException $e) {
            $this->logger->error("PDO: ".$e->getMessage(), ["class"=>get_class($this),"method"=>__METHOD__]);
            return null;
        }
    }

Я не уверен, почему он не может загрузить идентификатор из базы данных или обновить базу данных значениями imagefile и imagename.Любая помощь, которая указывает мне правильное направление или которая может сказать мне, где я делаю ошибки, ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...