私は無料のテーブルを持っています: user, book, user_book, offers
user テーブルにはメソッドがあります:
public function getBooks()
{
return $this->hasMany(UserBook::className(), ['user_id' => 'id']);
}
user_book テーブルには、user_id、book_id の 2 つのフィールドがあります。とメソッド
public function getUser()
{
return $this->hasOne(User::className(), ['id' => 'user_id']);
}
public function getBook()
{
return $this->hasOne(Book::className(), ['id' => 'book_id']);
}
テーブルオファーには、getUser()、getBook()、
そして今、ユーザーが持っていない本を表示したいと思います。私は次のようなことをしようとします
$query = Offer::find()
->with('user')
->andWhere([
'offer.status' => Offer::STATUS_ACTIVE,
]);
$query->andWhere(['not in', 'offer.book_id', 'user.books.book_id']);
しかし、うまくいきません。どうすれば作れますか?