@yii16

Как строить ActiveRecord запросы в Yii2?

Читал мануал и этот и в учебнике на гитхабе, но всё ещё не могу разобраться с методикой составления запросов на ActiveRecord

Например работает запрос, который был встроен в Yii2 сразу после установки:
$countries = $query->orderBy('name')
->offset($pagination->offset)
->limit($pagination->limit)
->all();

Уберём из него отступ и limit - не работает
$countries = $query->orderBy('name')
->all();

Ошибка:
PHP Warning – yii\base\ErrorException
htmlspecialchars() expects parameter 1 to be string, array given


Простой запрос count работает:
$countries = $query->where(['country.code' => 'AU'])->count();

Попробуем получить данные:
$countries = $query->where(['country.population' > 4444444])->all();

Ошибка:
Invalid Parameter – yii\base\InvalidParamException
Operator ''requires two operands.

Ок, перепишем и вынесем оператор сравнения:
$countries = $query->where(['>', 'country.population', 4444444])->all();

Ошибка, говорит что я массив передаю (где тут массив?) туда где строка должна быть:
PHP Warning – yii\base\ErrorException
htmlspecialchars() expects parameter 1 to be string, array given

В общем, есть хороший мануал по этой теме? Интересуют не эти конкретно запросы, а сам принцип построения?
  • Вопрос задан
  • 242 просмотра
Пригласить эксперта
Ответы на вопрос 1
Это Query Builder а не ActiveRecord
Поставьте себе IDE по типу PhpStorm, и проваливайтесь в метод по клику по нему, и смотрите какие аргументы он принимает, и как их использует. А так в документации достаточно понятно описано как использовать этот функционал.
Также можете использовать:
$countries = $query->orderBy('name')
->offset($pagination->offset)
->limit($pagination->limit)
->createCommand()->rawSql;

Для того чтобы понять какой в итоге sql запрос составляется и отправляется в базу
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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