@lzy

Call to a member function offset() on array?

Привет! Проблема с пагинацией, в целом все работает, запрос тоже. Но вот никак не могу разобраться с offset и этой ошибкой, подскажите пожалуйста

$R = 6371;  // earth's mean radius, km
        $connection = Yii::$app->getDb();
        $command = $connection
            ->createCommand(
                "select id, title, keywords, country, city, latitude, longitude, 
		round((((acos(sin(($lat*pi()/180)) * sin((latitude*pi()/180))+cos(($lat*pi()/180)) * cos((latitude*pi()/180)) * cos((($long- longitude)*pi()/180))))*180/pi())*60*1.1515*1.609344), 2) as D
		from posts
		having D < $post_distance
		order by id desc"
            );
        $pages = new Pagination(['totalCount' => count($command->queryAll()), 'pageSize' => 5, 'forcePageParam' => false, 'pageSizeParam' => false]);

        $posts = ($command->queryAll())->offset($pages->offset)->limit($pages->limit)->all();


Ошибка на этой строчке $posts = ($command->queryAll())->offset($pages->offset)->limit($pages->limit)->all();
  • Вопрос задан
  • 34 просмотра
Решения вопроса 1
vilinyh
@vilinyh
$command->queryAll() возвращает массив записей, а не объект.
а методы offset(), limit() и all() - это методы классов Query/ActiveQuery/ActiveRecord.

Вы можете переписать запрос для использования offset/limit в тексте самого запроса, или использовать объект Query (или его потомков):
$query = (new yii\db\Query())
        ->select(...)
        ->from(...)
        ->where(...)
        ->having(...)
        ->groupBy(...)
        ->orderBy(...);

    $pages = Pagination(['totalCount' => $query->count(), ...]);
    $posts = $query->offset(...)->limit(...)->all();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы