Как получить результат запроса YII 2 (count relation)

297
16 июня 2017, 10:38

На примере этого кода:

$books = Books::find()
->joinWith(['reviews'])
->select(['books.id','books.name', 'COUNT(reviews.id) as cnt'])
->groupBy('books.id')
->orderBy('books.name')
->all();

Как вывести(получить) id, name и количество всех отзывов (cnt)?

Answer 1

Как и у обычного запроса, в переменной $books будет массив с объектами Books, только чтобы вывести cnt нужно создать публичный метод:

class Books extends ActiveRecord {
    public $cnt;
    //Дальше ваш класс
}

И потом просто получаете данные:

foreach ($books as $book) {
    echo 'Book ID: ' . $book->id . PHP_EOL;
    echo 'Book name: ' . $book->name . PHP_EOL;
    echo 'Reviews: ' . $book->cnt . PHP_EOL;
}
READ ALSO
Ошибка после смены версии PHP

Ошибка после смены версии PHP

После смены версии PHP с 54 на 7

293
Парсинг посредством Curl

Парсинг посредством Curl

Добрый деньПытаюсь получить данные с сайта azlyrics

285
Регулярка - выбрать по шаблону с конца строки

Регулярка - выбрать по шаблону с конца строки

Не получается составить шаблон для последней части строки

172
Wordpress - Вывести контент страницы single.php

Wordpress - Вывести контент страницы single.php

При создании темы, используется плагин Custom Post Type UI

306