У меня есть три таблицы: book(id, title, author) и category(id, title) связанные между собой таблицей book_category(id, book_id, category_id). Как мне сделать правильный andWhere, чтоб выводились книги, где category = $search_cat?
$books = Book::find()->orderBy('id DESC')
->andWhere(['like', 'title', $search_title])
->andWhere(['like', 'author', $search_author])
->andWhere(['like', 'category', $search_cat]);
Связи настроены следующим образом:
В модели Book:
public function getBookCategory()
{
return $this->hasMany(BookCategory::className(), ['book_id' => 'id']);
}
public function getCategories(){
return $this -> hasMany(Category::className(), ['id' => 'category_id']) -> via('bookCategory');
}
В модели Category:
public function getBookCategory()
{
return $this->hasMany(BookCategory::className(), ['category_id' => 'id']);
}
В модели BookCategory:
public function getCategory()
{
return $this->hasOne(Category::className(), ['id' => 'category_id']);
}
public function getBook()
{
return $this->hasOne(Book::className(), ['id' => 'book_id']);
}