drvxclagw656708070 2014-10-16 12:48
浏览 62
已采纳

Yii CDbCriteria添加了不需要的别名

I need to run following statements by CDbCriteria in Yii :

SELECT `tbl_products`.`id` FROM `tbl_products`
INNER JOIN `tbl_producttags` 
    ON `tbl_products`.`id` = `tbl_producttags`.`product_id` 
INNER JOIN `tbl_tags`
    ON `tbl_producttags`.`tag_id` = `tbl_tags`.`id`

What I've tried so far :

$criteria = new CDbCriteria();
    $criteria->select= '`tbl_products`.`id`';
    $criteria->join ='INNER JOIN `tbl_producttags` ON `tbl_products`.`id` = `tbl_producttags`.`product_id`'
                   . ' INNER JOIN `tbl_tags` ON `tbl_producttags`.`tag_id` = `tbl_tags`.`id`';      
    $products = Products::model()->findAll($criteria);

But it get me following error :

SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'tbl_products.id' in 'field list'. The SQL statement executed was: SELECT tbl_products.id FROM tbl_products t INNER JOIN tbl_producttags ON tbl_products.id = tbl_producttags.product_id INNER JOIN tbl_tags ON tbl_producttags.tag_id = tbl_tags.id

The problem is :

It's because of that CDbCriteria added unwanted alias name t after tbl_products

How can I fix it?

  • 写回答

1条回答 默认 最新

  • dselp3944 2014-10-16 12:54
    关注

    Use this

        $criteria = new CDbCriteria();
        $criteria->select= '`yourAlias`.`id`';
        $criteria->alias="yourAlias";
        $criteria->join ='INNER JOIN `tbl_producttags` ON `tbl_products`.`id` = `tbl_producttags`.`product_id`'
                       . ' INNER JOIN `tbl_tags` ON `tbl_producttags`.`tag_id` = `tbl_tags`.`id`';      
        $products = Products::model()->findAll($criteria);
    

    the alias name of the table. If not set, it means the alias is 't'

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线