0
我有自由表:用戶,書,user_book,提供與結表Yii2關係
用戶表有方法:
public function getBooks()
{
return $this->hasMany(UserBook::className(), ['user_id' => 'id']);
}
user_book表有兩個字段:USER_ID,book_id;和方法
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']);
但它不起作用。你有一些想法,我怎麼能做到這一點?
好吧,我有 '公共職能getBooks(){ 回報 $這個 - >的hasMany(書::類名(),[ '身份證'=> 'book_id']) - > viaTable('{{%UserBooks}}',['user_id'=>'id']); }'但如何構建查詢? –
你可以使用'via('userBooks')' - 我定義了這個關係,因爲我可以看到。在查詢中使用' - > joinWith(['books'])'然後在查詢中使用它作爲'books.id',而不是'user.books.id' – Yupik