我需要在一个旧项目中实现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;
}
如果我使用
转储sqlorm: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