2013-11-27 2 views
0

В моем веб-приложении у меня есть три модели. Namely- изделия, Производители, items_manufacturers Это запрос, мне нужно выполнитьзапрос реляционных моделей в Yii

SELECT items.id,item_desc,manufacturers.id,manufacturers.name FROM items_manufacturers,items,manufacturers WHERE items_manufacturers.item_id=item.id AND items_manufacturers.manufacturer_id=manufacturers.id 

Соотношение между моделями

public function relations() 
    { 
     // NOTE: you may need to adjust the relation name and the related 
     // class name for the relations automatically generated below. 
     return array(
      'item' => array(self::BELONGS_TO, 'Items', 'item_id'), 
      'manufacturer' => array(self::BELONGS_TO, 'Manufacturers', 'manufacturer_id'), 
      'itemsManufacturersLocations' => array(self::HAS_MANY, 'ItemsManufacturersLocations', 'items_manufacturer_id'), 
     ); 
    } 

Я не могу написать этот запрос, используя соглашения в рамках Yii. Это то, что я пытался

$im=new CDbCriteria ; 
$im->with= array(
      'items_manufacturers.item_id' 
      'items_manufacturers.manufacturer_id' 
      'items.item_desc' 
      'manufacturers.manufacturer_name' 
      'condition'=>'items_manufacturers.manufacturer_id=manufacturers.id 
         items_manufacturer.item_id=items.id' 
); 
))->findAll(); 

Любой орган, пожалуйста, помогите мне с этим, так как я новичок в этом framework.I я застрял с this.I попробовал это в контроллере items_manufacturers.

ответ

0

Вы назначая «с» собственность с БД столбцов, в то время как вы должны сделать что-то вроде:

$im = new CDbCriteria; 

$im->with = array('items','manufacturers'); // you put 'relation names' here, not db columns 

$imf = ItemsManufacturers::model()->findAll($im); 

Вы могли бы сделать это без критериев:

$imf = ItemsManufacturers::model()->with('items','manufacturers')->findAll(); 
+0

это выборки при items.id = items_manufacturers.item_id и manufacturer.id = items_manufacturers.manufacturer_id? – user2492854

+0

хорошо, функция 'with' делает JOIN, поэтому – apoq

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