PHPYII 2,有没有一种方法可以预取带有条件的相关模型

PHPYII 2,有没有一种方法可以预取带有条件的相关模型,php,yii2,Php,Yii2,因此,我最近发现了Yii查询的“with”功能,正如您在上面的查询中所看到的,我正在获取与它们相关的产品的价格警报,这使我不必循环查看每个价格警报并单独获取每个产品,但我的问题是,有没有一种方法可以强制对此设置条件,我想得到的是带有产品条件的价格通知,所以我只想得到相关产品条件为真的价格通知 您可以在中使用方法和闭包来完成 PriceAlert::find()->andWhere(['user_id' => Yii::$app->user->id])->orderB

因此,我最近发现了Yii查询的“with”功能,正如您在上面的查询中所看到的,我正在获取与它们相关的产品的价格警报,这使我不必循环查看每个价格警报并单独获取每个产品,但我的问题是,有没有一种方法可以强制对此设置条件,我想得到的是带有产品条件的价格通知,所以我只想得到相关产品条件为真的价格通知

您可以在
中使用
方法和闭包来完成

PriceAlert::find()->andWhere(['user_id' => Yii::$app->user->id])->orderBy('complete DESC, updated_at DESC')->with('product')

请参阅。

前面的答案不完整,如果您想在主查询中添加产品条件(而不是获取相关记录的人),您只需使用
joinWith()
而不是
with()
,例如:

...->with(['product' => function ($query) {
    $query->andWhere(/* product conditions here */);
}]);
或者,如果要在联接查询的部分的中指定一些额外条件:

PriceAlert::find()
    ->joinWith('product')
    ->andWhere(['user_id' => Yii::$app->user->id])
    ->andWhere(['>', 'product.price', 100])
    ->orderBy('complete DESC, updated_at DESC')
    ->all();

阅读更多信息。

正在寻找,请给我留下一些问题。:)被10秒击败。
PriceAlert::find()
    ->joinWith(['product' => function ($q) {
        // add conditions here
    }])
    ->andWhere(['user_id' => Yii::$app->user->id])
    ->orderBy('complete DESC, updated_at DESC')
    ->all();