Zend framework2 Zend 2.1:是否可以通过Db>;Sql>;挑选

Zend framework2 Zend 2.1:是否可以通过Db>;Sql>;挑选,zend-framework2,zend-db,zend-db-select,Zend Framework2,Zend Db,Zend Db Select,我对Zend很陌生,对Zend Select抽象很感兴趣。我在尝试创建一个连接来自不同模式的另一个表的查询时遇到了一点问题 我尝试生成的mySql查询是: SELECT * FROM `assets` JOIN `projects` ON `assets`.project_id = `projects`.id JOIN `secondSchema`.`users` AS `users` ON `users`.id = `projects`.user_id WHERE `projects`.id

我对Zend很陌生,对Zend Select抽象很感兴趣。我在尝试创建一个连接来自不同模式的另一个表的查询时遇到了一点问题

我尝试生成的mySql查询是:

SELECT * FROM `assets`
JOIN `projects`
ON `assets`.project_id = `projects`.id
JOIN `secondSchema`.`users` AS `users`
ON `users`.id = `projects`.user_id
WHERE `projects`.id = ?
AND `users`.id = ?
使用Zend/Db/Sql/Sql/Select,我可以设置以下Select生成器,但我正在努力在生成的Sql语句中设置另一个模式:

$select = $this->_sqlBuilder->select();
    $select->from('assets');
    $select->join(
        'projects',
        'projects.id = assets.project_id'
    );
    $select->join(
        'users',
        'users.id = projects.user_id'
    );
    $select->where->equalTo('assets.project_id', $projectID);
    $select->where->equalTo('users.id', $userId);
我曾尝试使用\Zend\Db\Sql\TableIdentifier设置模式,但随后替换了适配器中的原始模式,看起来无法在查询中同时显示这两个模式

使用Sql/Select还是Zend Db的方法不对


感谢您的帮助

看起来使用Db\Select实际上不可能做到这一点。但是,您可以直接从适配器创建一些优秀的供应商可移植sql。


谢谢。

看起来使用Db\Select实际上不可能做到这一点。但是,您可以直接从适配器创建一些优秀的供应商可移植sql。


谢谢。

问题的出现是因为Select类转义引号的方式

$select->join(“database2.table2”,“database2.table2.id=table.id”)

呈现为:

选择“表”。*,“数据库2.表2”。* 从“表” “database2.”“table2.”“id”=“table.”“id”上的内部联接“database2.table2”

请注意“database2.table2”周围不一致和不正确的引用

更新\Zend\Db\Sql\Select中的第596、599、624、625行以将“quoteIdentifier”方法替换为“quoteIdentifier Infragment”将正确呈现查询并允许执行跨数据库联接

我已经向Zend提交了一份问题报告,因为我不相信当前的行为是有意的,所以希望它能在未来的构建中更新。目前,手动更新类是很容易的(尽管承认有点脏)


问题的出现是因为Select类转义引号的方式

$select->join(“database2.table2”,“database2.table2.id=table.id”)

呈现为:

选择“表”。*,“数据库2.表2”。* 从“表” “database2.”“table2.”“id”=“table.”“id”上的内部联接“database2.table2”

请注意“database2.table2”周围不一致和不正确的引用

更新\Zend\Db\Sql\Select中的第596、599、624、625行以将“quoteIdentifier”方法替换为“quoteIdentifier Infragment”将正确呈现查询并允许执行跨数据库联接

我已经向Zend提交了一份问题报告,因为我不相信当前的行为是有意的,所以希望它能在未来的构建中更新。目前,手动更新类是很容易的(尽管承认有点脏)


这到底是怎么回事?有错误吗?返回的错误是“sql无法生成语句”,检查返回的sql时出错问题是users表位于不同的架构上。所以我的问题是,我需要在第二个连接中添加额外的模式。希望这在不使用原始sql的情况下是可能的,这似乎类似于这个问题->并且除了“不可能”之外缺乏答案表明原始sql是解决问题的方法go@Crisp是的,我现在得出结论,这是不可能的,我只是担心我错过了拼图的一部分。谢谢这到底是怎么回事?有错误吗?返回的错误是“sql无法生成语句”,检查返回的sql时出错问题是users表位于不同的架构上。所以我的问题是,我需要在第二个连接中添加额外的模式。希望这在不使用原始sql的情况下是可能的,这似乎类似于这个问题->并且除了“不可能”之外缺乏答案表明原始sql是解决问题的方法go@Crisp是的,我现在得出结论,这是不可能的,我只是担心我错过了拼图的一部分。Thanksnice修复程序尽管对核心zend php进行编辑意味着将来不容易更新,但修复程序运行良好。可能这确实是Zend想要修复的一个疏忽,很好地将其标记给他们。很好的修复尽管对核心Zend php进行编辑意味着将来不容易更新,但修复效果很好。这可能是Zend想要纠正的一个疏忽,好让他们知道这一点。