Php Yii2在onCondition中使用变量

Php Yii2在onCondition中使用变量,php,yii2,Php,Yii2,在onCondition中可以使用变量吗 关系如下: public function getMybook() { return $this->hasOne(Book::className(), ['book_id' => 'idbook'])->onCondition(['user_id' => $user_id]); } 我想将其与以下内容结合使用: $books = Books::find()->joinWith('myBook')->all()

在onCondition中可以使用变量吗

关系如下:

public function getMybook()
{
    return $this->hasOne(Book::className(), ['book_id' => 'idbook'])->onCondition(['user_id' => $user_id]);
}
我想将其与以下内容结合使用:

$books = Books::find()->joinWith('myBook')->all();

但是如何将user_id参数发送到onConditon中呢?谢谢

不能在关系函数中使用动态参数
但是为什么不使用where条件:

$books = Books::find()->joinWith('myBook')->where(['myBook.user_id'=>$user_id])->all();

您可以使用闭包,例如:

return $this->hasOne(Book::className(), ['book_id' => 'idbook'])->andWhere('user_id = :user_id');


$user_id = 123;
$books = Books::find()->joinWith([
    'myBook' => function ($q) use ($user_id) {
        $q->addParams([':user_id' => $user_id]);
    }
])->all();

不,我需要将sql设置为select*from books left join mybook on books.id=mybook.id和userid=1,其中有些内容。如果我使用where子句,它将变成select*from BOOTKS left join mybook on books.id=mybook.id,其中userid=1,结果不是我想要的。