Yii2查询mysql,添加查询中不存在的列

23c0lvtd  于 2023-05-05  发布在  Mysql
关注(0)|答案(3)|浏览(92)

我想得到一个不存在的列,但返回错误
正常的方式是:

SELECT 1 AS flag....

在yii中:

Model::find()->select("1 AS flag, ...)...

问题是查询返回顶点

SELECT `1` AS `flag`

我已经尝试了数组,但结果是一样的。
我该怎么办?
谢了加布里埃莱

z31licg0

z31licg01#

函数findBySql可能适合你:

$sql = 'SELECT 1 as flag ...';
$model = Model::findBySql($sql)->all();
vlurs2pr

vlurs2pr2#

除了gmcanswer之外,您还可以在模型类中声明变量,然后在query中作为alias使用。

class YourModelName extends ActiveRecord
{
     public $flag;
}

然后你下面的查询将工作。

Model::find()->select("1 AS flag, ...)...

希望有帮助!

0vvn1miw

0vvn1miw3#

我在Yii文档中发现了这个细节之后找到了一个解决方案:
https://www.yiiframework.com/doc/api/2.0/yii-db-query#select()-detail
除非列包含括号(这意味着该列包含DB表达式),否则该方法将自动对列名加上引号
所以...如果你选择一个固定的字符串,你可以将所选的“列” Package 在一个字符串函数中,比如LTRIM(),它除了欺骗Yii不要用反引号引用字符串之外,什么都不会做。

Model::find()->select("LTRIM(1) AS flag, ...)...

您还需要按照前面的建议添加flag作为模型的属性,然后您可以使用查询的输出$Model->flag

相关问题