【发布时间】:2020-01-15 15:40:42
【问题描述】:
我有模特
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']);
}
}
我需要获取一些药物的问题,这些药物通过consumerRates 表中的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();
我应该如何构建我的查询以获得我需要的结果?
【问题讨论】:
-
解释你的表之间的关系
-
试试这个:
Drug::find()->joinWith(['consumptionRates'])->andWhere(['consumption_rate.culture_id' => $cultureId])->all();
标签: activerecord yii2 has-many