Есть 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, но так уж вышло, что решить эту задачу нужно. Спасайте, умные люди:)