相关疑难解决方法(0)

Yii2:ActiveQuery"with"无效

情况

我有三个模型/ db-tables与1:n相关:一个order有多个commissions,一个佣金有多个commission_positions.因此,commission_position具有包含佣金ID的FK字段.佣金本身有一个包含订单ID的FK字段.

订单>委员会> CommissionPositions

问题

我现在需要做的是选择相关订单模型中具有特定值的所有CommissionPositions.显而易见的解决方案是使用CommissionPosition的Query-Object,我使用命名范围进行扩展.命名范围如下所示:

class CommissionPositionQuery extends ActiveQuery
{
   /**
     * Named scope to filter positions of a certain alpha order id
     * @param integer $id the alpha order id
     * @return \common\models\query\CommissionPositionQuery
     */
    public function alphaOrderId($id)
    {
        //TODO: with not working
        $this->with(['commission.order']);
        $this->andWhere(['alpha_order_id'=>$id]);
        return $this;
    }
}
Run Code Online (Sandbox Code Playgroud)

该关系commission在委员会模型和工作中定义.第二种关系order是在佣金模型上定义的,也是有效的.过滤后的字段alpha_order_id位于订单表中.现在我执行这样的查询:

$filteredPositions = CommissionPosition::find()->alphaOrderId(17)->all();
Run Code Online (Sandbox Code Playgroud)

成功调用范围并使用where-part,但是当我检查生成的SQL时,我看不到连接语句,即使我使用with-method告诉yii一起获取关系.响应是'未知列alpha_order_id',这是有意义的,因为没有连接到相关表.这是生成的SQL:

SELECT * FROM `commission_position` WHERE (`alpha_order_id`=17)
Run Code Online (Sandbox Code Playgroud)

我错过了什么?这是Yii2的错误吗?

yii2

5
推荐指数
1
解决办法
4549
查看次数

标签 统计

yii2 ×1