gpt4 book ai didi

php - Cakephp 中的 UNION 语法

转载 作者:IT老高 更新时间:2023-10-29 00:20:00 31 4
gpt4 key购买 nike

有人知道在 CakePHP 中进行 UNION 查询的好方法吗?我想避免使用 $this->query();

有两个表 t1,t2:

SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id

有三个表 t1、t2、t3:

SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
LEFT JOIN t3 ON t2.id = t3.id
UNION
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id
LEFT JOIN t3 ON t2.id = t3.id
UNION
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id
RIGHT JOIN t3 ON t2.id = t3.id

最佳答案

太多的程序员试图将自己限制在框架的功能上。不。使用框架提供的内容。如果它没有您想要的功能,那么:

  • 将您需要的功能编码到类扩展中

  • 自定义旋转框架内的代码以满足您的需求。

通常情况下,开发人员会尝试将方形钉子敲入圆孔,最终会做太多额外的工作,而这实际上只会使代码变得复杂。退后一步,问问你为什么一开始就使用这个框架。它为非结构化语言带来了结构。它为构建您的应用程序提供了坚实的可重用基础。它并不打算成为一个让自己置身于其中并受到限制的盒子。

更新:我花了一分钟时间阅读 Complex Find Conditions并找到了你的答案:

$joins = array(
array(
'table' => 'test_twos',
'alias' => 'TestTwo',
'type' => 'LEFT',
'conditions' => array(
'TestTwo.id = TestOne.id',
)
),
array(
'table' => 'test_threes',
'alias' => 'TestThree',
'type' => 'LEFT',
'conditions' => array(
'TestThree.id = TestOne.id',
)
)
);

$dbo = $this->getDataSource();
$subQuery = $dbo->buildStatement(
array(
'fields' => array('*'),
'table' => $dbo->fullTableName($this),
'alias' => 'TestOne',
'limit' => null,
'offset' => null,
'joins' => $joins,
'conditions' => null,
'order' => null,
'group' => null
),
$this->TestOne
);
$query = $subQuery;

$query .= ' UNION ';
$joins = array(
array(
'table' => 'test_twos',
'alias' => 'TestTwo',
'type' => 'LEFT',
'conditions' => array(
'TestTwo.id = TestOne.id',
)
),
array(
'table' => 'test_threes',
'alias' => 'TestThree',
'type' => 'RIGHT',
'conditions' => array(
'TestThree.id = TestOne.id',
)
)
);

$dbo = $this->getDataSource();
$subQuery = $dbo->buildStatement(
array(
'fields' => array('*'),
'table' => $dbo->fullTableName($this),
'alias' => 'TestOne',
'limit' => null,
'offset' => null,
'joins' => $joins,
'conditions' => null,
'order' => null,
'group' => null
),
$this->TestOne
);

$query .= $subQuery;

pr($query);

关于php - Cakephp 中的 UNION 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3536107/

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