Попытка выполнить этот запрос:
SELECT md.title, md.url FROM MenuData md, Menu m WHERE m.parent=0 AND m.menuType=1 AND md.menuID = m.id ORDER BY m.sort ASC
Как показано ниже:
$criteria = new CDbCriteria(); $criteria->together = true; $criteria->with = array('MenuData'); $criteria->compare("Menu.menuType", 1); $criteria->compare("Menu.parent", 0); $criteria->join = 'LEFT JOIN MenuData ON MenuData.menuID=Menu.id'; $criteria->order = '`Menu.sort` ASC'; $criteria->compare("MenuData.locale", $this->lang); $results = Menu::model()->findAll($criteria);
Имеются модели меню и Menudata. Но получив следующую ошибку:
Relation "MenuData" is not defined in active record class "Menu".
$ criteria-> with == join.
Я предполагаю, что у вас есть отношение в меню модели.
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( 'MenuData' => array(self::HAS_MANY, 'Menudata', 'menuID','joinType' => 'LEFT JOIN'), ); }
И ваши критерии:
$criteria = new CDbCriteria(); $criteria->together = true; $criteria->with = array('MenuData'); $criteria->compare("t.menuType", 1); $criteria->compare("t.parent", 0); // $criteria->join = 'LEFT JOIN MenuData ON MenuData.menuID=Menu.id'; $criteria->order = '`t.sort` ASC'; $criteria->compare("MenuData.locale", $this->lang); $results = Menu::model()->findAll($criteria);