Yii2: ActiveQuery «с» не работает

обстоятельства

У меня есть три модели / db-таблицы, связанные с 1: n каждая: Anorder имеет несколькоcommissions и комиссия имеет несколькоcommission_positions, Следовательно, Commission_position имеет FK-поле, содержащее идентификатор комиссии. Сама комиссия имеет FK-поле, содержащее идентификатор заказа.

Заказ> Комиссия> КомиссияПозиции

проблема

Теперь мне нужно выбрать все позиции CommissionPosition, имеющие определенное значение в связанной модели заказа. Очевидное решение - использовать Query-Object of CommissionPosition, который я расширил с помощью именованной области видимости. Именованная область видимости выглядит так:

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;
    }
}

Отношениеcommission определяется по комиссии-модели и работает. Второе отношениеorder определяется по модели комиссии и работает также. Отфильтрованное полеalpha_order_id находится в таблице заказов. Теперь я выполняю запрос следующим образом:

$filteredPositions = CommissionPosition::find()->alphaOrderId(17)->all();

Область действия вызывается успешно и используется часть where, но когда я проверяю сгенерированный SQL, я не вижу операторов join, хотя я используюwith-метод, чтобы сказать yii, чтобы получить отношения вместе. Ответом является «неизвестный столбец alpha_order_id», который имеет смысл, поскольку нет соединения с соответствующими таблицами. Это сгенерированный SQL:

SELECT * FROM `commission_position` WHERE (`alpha_order_id`=17)

Что мне не хватает? Это ошибка в Yii2?

Ответы на вопрос(2)

Ваш ответ на вопрос