Преобразовать код Yii1 в Yii2

#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 /…