gpt4 book ai didi

php - MySQL Union All 在 Yii 的默认范围内

转载 作者:IT王子 更新时间:2023-10-28 23:43:55 25 4
gpt4 key购买 nike

我使用的是 Yii 1.1.16,想知道 Union 2 模型如何使用默认范围?

model 1 = abc
model 2 = abc2

基本上我想做一个简单的联合

SELECT * FROM `abc`
UNION ALL
SELECT * FROM `abc2`

还没有真正使用默认范围,所以对这个概念有点陌生。 两个表的列号和列名完全相同。

我试过了,但失败了。

在我的 abc 模型中

public function defaultScope() {
return array(
'alias' => 't2',
'select'=>array('t.*, t2.*'),
'union'=>array('SELECT * FROM `abc2`')
);
}

更新:刚刚实现http://www.yiiframework.com/doc/api/1.1/CDbCriteriaCDbCriteria没有union

public function defaultScope() {
return array(
//'alias' => 't',
'select'=>array('*'),
'join'=>'UNION ALL SELECT * FROM `abc2`'
);
}

上面的代码给了我一个错误

CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column 't.make_code' in 'where clause'. The SQL statement executed was: SELECT `t`.`class_code`, `t`.`make_code`, `t`.`model_code` FROM `abc` `t` UNION ALL SELECT * FROM `abc2` WHERE `t`.`make_code`=:yp0 LIMIT 1. Bound with :yp0='11' 

在两个表中,我都有列 make_code

我需要这样的查询

SELECT * FROM 
(
SELECT * FROM `abc`
UNION ALL
SELECT * FROM `abc2`
) AS t

怎么办?

最佳答案

您可以使用 Yii query builder ;当您需要构建非标准查询时,它是首选解决方案,并且它本身支持 UNION:

$data = Yii::app()->db->createCommand()
->select('*')
->from('abc')
->union('SELECT * FROM `abc2`')
->where('make_code=:make_code', [':make_code'=>42])
->queryAll();

或者,您可以使用 ->getText() 或手动编写 SQL,然后利用 CSqlDataProvider 而不是直接查询制作可配置的数据源。

关于php - MySQL Union All 在 Yii 的默认范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27956474/

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