使用Phalcon将记录插入具有FK关系的两个表时出错

时间:2014-04-12 18:14:02

标签: php mysql database phalcon

我的MySQL数据库中有两个表,它们是这样创建的:

CREATE TABLE table1 (
  id int auto_increment,
  name varchar(10),
  primary key(id)
) engine=innodb

CREATE TABLE table2 (
  id_fk int,
  stuff varchar(30),
  PRIMARY KEY (`id_fk`),
  CONSTRAINT fk_id FOREIGN KEY(id_fk) REFERENCES table1(id) ON DELETE CASCADE
) engine=innodb

(这些不是原始表。重点是table2有一个引用表1中主键的外键)

现在在我的代码中,我想在一个事务中向两个表添加条目。我这样做:

                $table1 = new table1();
                $table1->setTransaction($transaction);
                $table1->name($name);


                if (!$table->create()) {
                    foreach ($table1->getMessages() as $message) {
                    $this->flash->error($message);
                }
                    $transaction->rollback("Can't save table1");
                } else {
                $table2 = new table2();
                $table2->setTransaction($transaction);
                $table2->setId($table1->getId());
                $table2->setStuff($stuff);
                if (!$table2->create()) {
                    foreach ($table2->getMessages() as $message) {
                        $this->flash->error($message);
                    }
                    $transaction->rollback("Can't save password");
                }
                $transaction->commit();

table1 create()是成功的,但是,当我尝试创建table2时,它总是会出现一个Constraint Violation错误,声明字段的值为" Id"在引用的表上不存在。如何使用phalcon事务将数据保存到单个事务中的两个引用表中。感谢。

0 个答案:

没有答案