如何为hasMany关系添加一些条件?

问题描述 投票:0回答:1

我有模特

class Drug extends ActiveRecord
{

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getProblems()
    {
        return $this->hasMany(Problem::class, ['id' => 'problem_id'])
            ->via('consumptionRateProblems');
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getConsumptionRateProblems()
    {
        return $this->hasMany(ConsumptionRateProblem::class, ['consumption_rate_id' => 'id'])
            ->via('consumptionRates');
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getConsumptionRates()
    {
        return $this->hasMany(ConsumptionRate::class, ['drug_id' => 'id']);
    }
}

我需要获取某些药物的问题,这些药物通过consumptionRates表中的culture_id和drug_id连接。

[当我使用andOnCondition时-我收到错误“非唯一表/别名:'consumption_rate'”

 $drugs = Drug::find()
     ->joinWith(['consumptionRates' => function (ActiveQuery $query) use ($cultureId) {
         return $query->andOnCondition(['consumption_rate.culture_id' => $cultureId]);
     }])
     ->all();

我应该如何构建查询以获得所需的结果?

activerecord yii2 has-many
1个回答
0
投票

感谢Serghiy Leonenco!

 $drugs = Drug::find()
    ->joinWith(['consumptionRates'])->andWhere(['consumption_rate.culture_id' => $cultureId])
->all();
© www.soinside.com 2019 - 2024. All rights reserved.