#yii #yii2
#yii #yii2
Вопрос:
Я новичок в Yii Framework и пытаюсь преобразовать код Yii1 в Yii2.
Я знаю, что в Yii2 нет класса CDbCriteria, поэтому, например, для следующего кода Yii1:
$criOrder = new CDbCriteria();
$criOrder->order = 'CRI_PresentationOrder';
$criModels = Criteria::model()->findAll($criOrder);
Я создал инструкцию Yii2:
$criModels = Criteria::find()->orderBy('CRI_PresentationOrder')->all();
Но у меня возникли некоторые проблемы при попытке найти правильный способ преобразования этого:
$crvCriteria = new CDbCriteria();
$crvCriteria->with = array('aCRCRV', 'aCRCRV.cRVCRI');
$crvCriteria->together = true;
$crvCriteria->condition = 'ACR_APP_Id = :appId';
$crvCriteria->params = array(':appId'=>$id);
$crvCriteria->order = 'cRVCRI.CRI_PresentationOrder';
$crvModels = ApplicantCriteriaValue::model()->findAll($crvCriteria);
особенно в отношении атрибутов ‘with’, ‘together’ и ‘params’.
Любые идеи / предложения будут высоко оценены.
Комментарии:
1. пожалуйста, покажите стандартный запрос на основе вашего кода преобразования..
2. ВЫБЕРИТЕ * ИЗ ApplicantCriteriaValue ЗНАЧЕНИЕ критерия ВНУТРЕННЕГО СОЕДИНЕНИЯ НА ACV_CRV_Id=CRV_Id КРИТЕРИЙ ВНУТРЕННЕГО СОЕДИНЕНИЯ НА CRV_CRI_Id=CRI_Id, ГДЕ ACV_APP_Id = : ПОРЯДОК ПРИЛОЖЕНИЙ ПО CRI_PresentationOrder
Ответ №1:
Предполагая, что ваша таблица ApplicantCriteriaValue имеет модель с именем ApplicantCriteriaValue, тогда должно быть
$criModels = ApplicantCriteriaValue::find()
->join('INNER JOIN', 'tbl_criteria_value',
'tbl_criteria_value.ACV_CRV_Id =ApplicantCriteriaValue.CRV_Id')
->join('INNER JOIN', 'tbl_criteria',
'tbl_criteria.CRV_CRI_Id =ApplicantCriteriaValue.CRV_Id')
->orderBy('CRI_PresentationOrder')->all();
Комментарии:
1. Спасибо! Как насчет атрибута Yii1 ‘together’?
2. в yii2 вам не нужно вместе .. в конечном итоге вы должны оценить отношения для этого см. yiiframework.com/doc-2.0/guide-db-active-record.html и yiiframework.com/doc-2.0 /…