@Pios88

Как вывести количество строк из связанной модели hasMany в Yii2?

Есть 2 таблицы MySQL,
author: id | name
book: id | author_id | title | прочая ересь
Таблицы связаны через author_id => id

Имеются соответственно связанные модели Book и Author и контроллеры к ним.
Задача: отобразить список авторов с указанием количества книг каждого из них.
Я понимаю, что мне нужно получить из Author значение id каждого автора, для этого я объявляю переменную $id и присваиваю ей соответствующее значение. В коде ниже видно. Но работает это совсем не так, как хотелось бы. То есть не работает.
Можно ли как-то одним запросом получить в итоге все "количества" книг для всех авторов и вывести их?
Или это каким-то циклом делается? Если присваиваю переменной $id конкретное значение, то он и в самом деле подсчитывает количество книг из таблицы book с таким значением author_id. Но вот как сделать это для всех и потом вывести - непонятно.
class AuthorController extends Controller {
        
    public function actionIndex() {
        
        $author = Author::find()->all();
        $id = Author::find()->select('id')->all();
        $book = Book::find()->where(['author_id' => $id])->count();

        return $this->render('index', ['author' => $author, 'book' => $book]);    
    }
}


На всякий случай. В представление это все выводится циклом:

<?php if(!empty($author)); ?>
<?php foreach($author as $author): ?>

        <h3><a href="#"> <?=$author->name?> </a></h3>
        <h3><a href="#"> <?=$book?> </a></h3>
        
<?php endforeach; ?>


З.Ы. Да, я абсолютный ноль в PHP, но так уж вышло, что решить эту задачу нужно. Спасайте, умные люди:)
  • Вопрос задан
  • 188 просмотров
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
зачем Вы создаете одинаковые вопросы?
Как вывести количество строк из связанной модели hasMany в Yii2?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы