gpt4 book ai didi

php - 使用 findAll 时 Yii AR 加入不起作用

转载 作者:行者123 更新时间:2023-12-02 07:41:26 25 4
gpt4 key购买 nike

我有两个表 menuslang_menus。我的 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() of CActiveRecordtogether property of CDbCriteria :

$menus = Menus::model()->with('menulanguages')->together()->findAll($criteria);

或:

$criteria = new CDbCriteria();
$criteria->condition = "t.clientId = ".Yii::app()->user->clientId." AND menulanguages.languageId = ".Yii::app()->user->userlanguage;
$criteria->together=true;

关于php - 使用 findAll 时 Yii AR 加入不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10697047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com