我有两张桌子menus
and lang_menus
. My Menus
模型如下:
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(
'menulanguages'=>array(self::HAS_MANY, 'MenuLangs', 'menuId'),
);
}
...
public function getMenus(){
$criteria = new CDbCriteria();
$criteria->condition = "t.clientId = ".Yii::app()->user->clientId." AND menulanguages.languageId = ".Yii::app()->user->userlanguage;
$count = Menus::model()->with('menulanguages')->count($criteria);
$pages=new CPagination($count);
//Results per page
$pages->pageSize=10;
$pages->applyLimit($criteria);
$menus = Menus::model()->with('menulanguages')->findAll($criteria);
return array('menus' => $menus, 'paging' => $pages);
}
这是抛出错误Unknown column 'menulanguages.languageId'
。
错误在行中$menus = Menus::model()->with('menulanguages')->findAll($criteria);
.
令人惊讶的是我得到了变量的值$count
正确。
通过查看日志,我可以看到为 findAll 查询运行的 SQL 查询是:
SELECT `t`.`id` AS `t0_c0`, `t`.`clientId` AS `t0_c1`, `t`.`restaurantId` AS `t0_c2` FROM `posif_menus` `t` WHERE (t.clientId = 1 AND menulanguages.languageId = 2) LIMIT 10
这意味着连接尚未发生。而正确的连接查询正在针对计数值运行。难道我做错了什么 ?
请帮忙。
只需使用together()CActiveRecord 的 http://www.yiiframework.com/doc/api/1.1/CActiveRecord#together-detail or togetherCDbCriteria 的属性 http://www.yiiframework.com/doc/api/1.1/CDbCriteria#together-detail:
$menus = Menus::model()->with('menulanguages')->together()->findAll($criteria);
or:
$criteria = new CDbCriteria();
$criteria->condition = "t.clientId = ".Yii::app()->user->clientId." AND menulanguages.languageId = ".Yii::app()->user->userlanguage;
$criteria->together=true;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)