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