Doctrine2架构工具:更新,约束不会生效

时间:2015-09-22 17:06:39

标签: mysql orm doctrine-orm entity-relationship

我需要在一个旧项目中实现OOP。

我的大多数实体工作正常,但在 用户 用户地址 之间添加约束只是结束在一些奇怪的行为中。

/**
 * @Table(name="users")
 * @Entity()
 * @EntityListeners({"Entity\Listener\UserListener"})
 */
class User {

    /**
     * Id of the user
     *
     * @var integer
     *
     * @Id
     * @Column(type="integer")
     * @GeneratedValue(strategy="AUTO")
     *
     */
    private $id;

    /**
     * @var \Entity\Address
     *
     * @OneToOne(targetEntity="Entity\UserAddress", mappedBy="user")
     */
    private $address;
}

...

/**
 * UserAddresses
 *
 * @Table(name="user_addresses")
 * @Entity
 */
class UserAddress
{
    /**
     * @var \Entity\User
     *
     * @Id
     * @OneToOne(targetEntity="Entity\User", inversedBy="address")
     * @JoinColumn(name="user_id", referencedColumnName="id")
     */
    private $user;
}

如果我使用

转储sql

orm:schema-tool:update --dump-sql

它返回将按预期添加的约束。

ALTER TABLE user_addresses ADD CONSTRAINT FK_6F2AF8F2A76ED395 FOREIGN KEY (user_id) REFERENCES users (id);

由于查询看起来没问题,我切换到了 - force 参数,该参数也返回了预期的结果:

Updating database schema...
Database schema updated successfully! "1" query was executed

现在问题出现了。当我再次使用 orm:schema-tool:update --dump-sql 命令时,我期望类似:

Nothing to update - your database is already in sync with the current entity metadata.

但是它返回了与以前完全相同的SQL。我可以多次重复这个过程,但它没有任何效果。

我错过了什么吗?

更新 仍然是同样的问题,也试过禁用foreign_key_checks并通过pma执行SQL

0 个答案:

没有答案