相关疑难解决方法(0)

Zend中的setIntegrityCheck选择连接

我正在研究一些 问题,询问如何在Zend Framework查询中进行连接,但答案总是像"只做setIntegrityCheck(FALSE)".

我的问题是:为什么我需要这样做?

在我看来,禁用"完整性检查"并不是使这项工作正常的方法.在我的特定情况下,我正在使用带有外键的一些InnoDB表的MySQL数据库,例如:

CREATE TABLE IF NOT EXISTS `tableA`
(
`id` CHAR(6),
`name` VARCHAR(255),
PRIMARY KEY (`id`)
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS `tableB`
(
`tableA_id` CHAR(6),
`somefield` VARCHAR(255),
PRIMARY KEY (`tableA_id`)
) ENGINE=InnoDB;

ALTER TABLE `tableB` ADD FOREIGN KEY fk1 (`tableA_id`) REFERENCES `tableA` (`id`);
Run Code Online (Sandbox Code Playgroud)

(这是我的数据库的一个非常简化的版本)

而且,我的查询代码如下所示:

$table = new Zend_Db_Table('tableB');
$select = $table->select(TRUE)
  ->join(array('a' => 'tableA'), 'tableB.tableA_id = a.id');
$result = $table->fetchAll($select);
Run Code Online (Sandbox Code Playgroud)

这给了我"选择查询无法与另一个表连接"异常,除非我添加setIntegrity(FALSE)到我的$select.

zend-framework zend-db-select

13
推荐指数
2
解决办法
1万
查看次数

标签 统计

zend-db-select ×1

zend-framework ×1