Как добавить несколько условий в отношения hasMany? - PullRequest
0 голосов
/ 15 января 2020

У меня есть модель

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']);
    }
}

Мне нужно получить Проблемы для некоторых лекарств, которые связаны через culture_id и drug_id в таблице потребления.

Когда я использую andOnCondition - я получаю сообщение об ошибке «Не уникальная таблица / псевдоним:« потребление_ »»

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

Как мне построить запрос для получения нужного мне результата?

1 Ответ

0 голосов
/ 16 января 2020

Спасибо Сергею Леоненко!

 $drugs = Drug::find()
    ->joinWith(['consumptionRates'])->andWhere(['consumption_rate.culture_id' => $cultureId])
->all();
...