0

私は無料のテーブルを持っています: 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']);

しかし、うまくいきません。どうすれば作れますか?

4

1 に答える 1