冲洗时,Doctrine 2执行两个插入

时间:2014-03-15 00:07:57

标签: php doctrine-orm doctrine duplicates

我第一次尝试了Doctrine。我使用了"入门" -Page http://doctrine-orm.readthedocs.org/en/latest/tutorials/getting-started.html

安装完所有内容后,我创建了一个简单的类并生成了数据库。

<?php
// src/testclass.php
/**
 * @Entity @Table(name="testclass")
 **/
class TestClass
{
    /** @Id @Column(type="integer") @GeneratedValue **/
    protected $id;

    /** @Column(type="string") **/
    protected $username;

    /** @Column(type="string") **/
    protected $password;


    ... (getter and setter) ...

}

现在,当我尝试创建一个新对象时,保持并刷新它,在数据库中插入两个条目。这是我创建和刷新对象的代码:

<?php
// bootstrap.php
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
use Doctrine\Common\Collections;

require_once "vendor/autoload.php";

$config = Setup::createAnnotationMetadataConfiguration(array(__DIR__."/src"), true);
$conn = array(
    'driver'   => 'mysqli',
    'host'     => '127.0.0.1',
    'dbname'   => 'doctrine',
    'user'     => 'User',
    'password' => '123'
);

$entityManager = EntityManager::create($conn, $config);    

$nchar = new TestClass();
$nchar->setUsername("Lood");
$nchar->setPassword("789");

$entityManager->persist($nchar);
$entityManager->flush();

在我使用flush之前,表是空的。使用flush后,应该有一个生成id = 1的条目,但是有两个条目包含id和2。

我试图自己弄清楚这个错误,但我找不到任何东西。我不认为这是一个学说问题,因为我甚至没有在互联网上找到任何关于此事的内容。

1 个答案:

答案 0 :(得分:0)

我终于解决了这个问题。我使用.htaccess文件来回忆index.php。所以代码运行了两次,只有一个日志文件可以证明这一点。我不知道为什么,但它工作,因为我删除并重新插入文件夹中的.htacces文件。代码每次调用只运行一次。

如果有人知道.htacces文件存在这些问题,我很乐意听到有关此问题的一些信息。