gpt4 book ai didi

php - Yii CDbCriteria 添加不需要的别名

转载 作者:行者123 更新时间:2023-11-29 12:38:47 25 4
gpt4 key购买 nike

我需要通过 CDbCriteria 运行以下语句在 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`

到目前为止我尝试过的:

$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);

但它给我带来了以下错误:

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

问题是:

这是因为 CDbCriteria 在 tbl_products 之后添加了不需要的别名 t

如何修复它?

最佳答案

使用这个

    $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);

表的别名。如果未设置,则表示别名为“t”

关于php - Yii CDbCriteria 添加不需要的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26404891/

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