Почему должно быть : array , если возвращается объект?

Есть функция:

public static function getByArticleId(int $articleId): ?array
    {
        $db = Db::getInstance();
        return $db->query("SELECT `comments`.*, `users`.`nickname` FROM `comments` JOIN `users` ON `users`.`id` = `comments`.`author_id` WHERE `comments`.`article_id` = :article_id ;", [':article_id' => $articleId], self::class);
    }

Я понимаю, что возвращается объект класса self::class. то есть, по-моему, мы должны были написать так:

public static function getByArticleId(int $articleId): ?self
    {
        $db = Db::getInstance();
        return $db->query("SELECT `comments`.*, `users`.`nickname` FROM `comments` JOIN `users` ON `users`.`id` = `comments`.`author_id` WHERE `comments`.`article_id` = :article_id ;", [':article_id' => $articleId], self::class);
    }

Но это вызывает ошибку. Почему?

dima1 22.05.2020 в 13:24

Ответы (1)


query под капотом дергает fetch, который всегда возвращает массив записей. Воспользуйтесь дебаггером чтобы посмотреть

ivashkevich 26.05.2020 в 10:24

Добавить новый ответ