$authors = Author::find()->with('book')->all();
foreach($authors as $author){
echo $author->name;
echo '<br>';
if($author->book){
echo 'у автора ' . count($author->name) . 'книг';
foreach($author->book as $book){
echo $book->title;
echo '<br>';
}
}else{
echo 'этот дядя не писал книг';
echo '<br>';
}
}
class AuthorController extends Controller {
public function actionIndex() {
$authors = Author::find()->select(['author.id', 'author.name', 'books' => 'count(*)'])
->leftJoin('book', 'author.id = book.author_id')
->groupBy('author.id')->asArray()->all();
return $this->render('index', ['authors' => $authors]);
}
}
foreach($authors as $author){
echo '<h2>'.$author['id'].') '.$author['name'].'</h2>'; // 1) Иван И.И.
echo '<p>Книг: '.$author['books'].'</p>'; // Книг: 17
}
но послушав многих людей, которые уже долго работают в данной сфере, сделал вывод, что лучше начинать карьеру с фриланса
admin
в конфигеsite.ru/index.php?r=admin/default/index
index.php?r=admin/default/index
modules
должна быть вне сервера, а сам сервер должен смотреть в папку web
, а не в корень сайта, это при чем у всех фреймворков $category->getPosts()->count();
<?php
class Author extends ActiveRecord
{
public static function tableName()
{
return 'author';
}
pubic static function primaryKey()
{
return ['id'];
}
}
class Book extends ActiveRecord
{
public static function tableName()
{
return 'book';
}
public static function primaryKey()
{
return ['id'];
}
public function getAuthor()
{
return $this->hasOne(Author::className(), ['id' => 'author_id']);
}
}
// Использование:
$books = Book::find()->all();
foreach ($books as $book) {
echo $book->author->name; // сработает метод getAuthor() из Book
}