Как настроить связь «один ко многим» между таблицами в MySQL?
Есть база данных с двумя таблицами:
1. Author - id | name
2. Book - id | author_id | title | description | image (последнее - просто URL)
Я настроил через phpmyadmin так, что теперь значения author_id в таблице book подсвечиваются и при клике на них я получаю строку с нужным автором из таблицы author. То есть сделал связь "много к одному".
Но мне нужно сделать еще и связь "один ком многим", чтобы по клику на id автора, я получал строки со всеми его книгами из таблицы book.
А тут толи лыжи не едут, толи я что-то не понимаю. В одну сторону все легко в phpmyadmin настроил, а в обратную никак не получается связь сделать.
Я выполняю задачу на Yii2 и некоторые функции автоматически считывают связи в базе, что позволяет просто в 2 строчки решать некоторые задачи, там не нужно писать SQL-запросы. Но это не будет работать, если связи не настроить. А через phpmyadmin делал, потому что всемогущий гугл подсказал такой способ и для связи "много к одному" это отлично сработало, а для "один ко многим" простой инструкции не нашел. В SQL я не разбираюсь, потому и спрашиваю.
Pios88, у тебя ЕСТЬ связь один ко многим связи много к одному как таковой не существует (это лишь инверсия один ко многим) может тебе надо МНОГО к МНОГИМ . Пиши код в Yii2 который вызывает затруднения
<?php
namespace app\models;
use yii\db\ActiveRecord;
use app\models\author;
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']);
}
}
И тут все выводится и работает.
А вот модель author:
<?php
namespace app\models;
use yii\db\ActiveRecord;
use app\models\book;
class Author extends ActiveRecord
{
public static function tableName()
{
return 'author';
}
public static function primaryKey()
{
return ['id'];
}
public function getBook()
{
return $this->hasMany(Book::className(), ['id' => 'author_id']);
}
}
И вот тут я не уверен верно ли все написал, потому что эти данные никуда не выводились - это раз. И второй момент, это то, что по заданию требуется, кроме всего прочего в админке вывести количество книг у каждого автора. И вот это сделать у меня никак не получается. Потому я и стал копать все ли с базой верно сделал. А-то 100500 способов уже использовал и не знаю как решить задачу. А с учетом того, что я в этом деле - дуб-дерево, только и осталось, что за советами к знающим людям идти:)