abler98
@abler98
Software Engineer

Как организовать связь многие ко многим в Yii2?

Есть две таблицы: films - таблица с фильмами, categories - таблица с категориями, films_categories - связь таблиц films и categories. Так вот, как мне в Yii2 организовать связь? Допустим, нужно получить все фильмы из определенной категории, или получить все категории для определенного фильма. Помогите, я до этого только самые простые связи использовал (hasOne, hasMany).
  • Вопрос задан
  • 7222 просмотра
Решения вопроса 1
@bighoc
php/javascript developer
Вот как это делается:

class FilmCategory {.....
public function getFilms(){
        return $this->hasMany(Films::className(), ['film_id' => 'film_id'])
            ->viaTable('films_categories', ['category_id' => 'category_id']);
    }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
lbondodesc
@lbondodesc
PHP Developer
Так пробовали?
// join with multiple relations
// find the orders that contain books and were placed by customers who registered within the past 24 hours
$orders = Order::find()->innerJoinWith([
    'books',
    'customer' => function ($query) {
        $query->where('customer.created_at > ' . (time() - 24 * 3600));
    }
])->all();
// join with sub-relations: join with books and books' authors
$orders = Order::find()->joinWith('books.author')->all();
Ответ написан
Ваш ответ на вопрос

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

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