【问题标题】:How to add few condition to hasMany relationship?如何在 hasMany 关系中添加很少的条件?
【发布时间】: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


【解决方案1】:

感谢 Serghiy Leonenco!

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 2013-09-02
    相关资源
    最近更新 更多