我正在查看一些 询问如何在 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`);
(这是我的数据库的一个非常简化的版本)
而且,我的查询代码如下所示:
$table = new Zend_Db_Table('tableB');
$select = $table->select(TRUE)
->join(array('a' => 'tableA'), 'tableB.tableA_id = a.id');
$result = $table->fetchAll($select);
这给了我“选择查询无法加入另一个表”异常,除非我setIntegrity(FALSE)
将$select
.