2014-08-27 1 views
0

У меня есть модель пользователя с атрибутом типа. и модель продукта с названием. Вот мой код.Как добавить псевдоним с моделью в CActiveDataProivder yii

$criteria = new CDbCriteria; 
$criteria->addCondition('type = "ABC"');  
$criteria->mergeWith (array (
      'with' => 'products' 
     )); 

$criteria->mergeWith (array (
      'condition' => "`products`.title LIKE '". $model->title ."'", 
      'together' => true 
     )); 

$dataProvider = new CActiveDataProvider('User', array(
     'criteria' => $criteria, 
    )); 

Это дает следующие ошибки: -

CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: 
Integrity constraint violation: 1052 Column 'type' in where clause is ambiguous 

Мой вопрос, как добавить псевдоним для модели User так User.type = "ABC" с использованием выше Approch.

ответ

1
$criteria = new CDbCriteria; 
$criteria->compare('t.type' => "ABC");  
$criteria->with= array('products'=>array('on'=>"title LIKE '$model->title'")); 

$criteria->together=true; 

$dataProvider = new CActiveDataProvider('User', array(
     'criteria' => $criteria, 
    )); 

если не работает, пожалуйста, вставьте полную ошибку со всем запросом

+0

Спасибо за ваш ответ и да, он работает с t.type, но что, если мы явно хотим добавить псевдоним для таблицы User. –

+0

Простите, брат, не может вам помочь. Yii требует, чтобы этот псевдоним создавал вложенные объекты, поэтому я никогда не пытался оспаривать его классные функции. – anwerj

0

попробовать так:

$criteria = new CDbCriteria; 
$criteria->addCondition('table_name.type = "ABC"');  
$criteria->mergeWith (array (
      'with' => 'products' 
     )); 

$criteria->mergeWith (array (
      'condition' => "`products`.title LIKE '". $model->title ."'", 
      'together' => true 
     )); 

$dataProvider = new CActiveDataProvider('User', array(
     'criteria' => $criteria, 
    )); 
+0

Спасибо за ваш ответ. Я пробовал это, но не работал. Колонка не найдена: 1054 Неизвестная колонка 'User.type' в 'where clause' –

+0

Вы уверены, что имя вашей таблицы: Пользователь? возможно, в базе данных mysql имя таблицы является пользователем ??? не забывайте caseensetive в mysql. – user2883814

+0

Да, имя таблицы «Пользователь» –

Смежные вопросы