gpt4 book ai didi

mysql - Symfony2 和 Doctrine Mysql 测试数据库 Persist

转载 作者:行者123 更新时间:2023-11-29 02:58:04 24 4
gpt4 key购买 nike

我在 AdministratorRole 之间有一个基本的 OneToMany 关系。

拥有方是管理员:

/**
* @ORM\OneToMany(targetEntity="App\PublicBundle\Entity\Role", mappedBy="administrator", cascade="persist")
**/
private $roles;

public function __construct() {
$this->roles = new ArrayCollection();
}

反面是角色。

/**
* @ORM\ManyToOne(targetEntity="App\PublicBundle\Entity\Administrator", inversedBy="roles")
* @ORM\JoinColumn(name="admin_id", referencedColumnName="admin_id")
**/
private $administrator;

管理员 可以有许多角色,例如ROLE_ADMINROLE_USER

以原子方式保存它们的代码是...

    $administrator = new Administrator();
$administrator->setName('Mario');
$administrator->setLastname('Superman');
$administrator->setUsername('mario@gmail.com');
$administrator->setPassword('password');

$role_admin = new Role();
$role_admin->setRole('ROLE_ADMIN');
$role_admin->setAdministrator($administrator);

$role_user = new Role();
$role_user->setRole('ROLE_USER');
$role_user->setAdministrator($administrator);

$administrator->setRoles($role_admin);
$administrator->setRoles($role_user);

$em->persist($administrator);
$em->persist($role_user);
$em->persist($role_admin);
$em->flush();

基本的东西。此代码位于通过 Ajax 调用的 Symfony2 Controller 中。它抛出 Integrity constraint violation,他说他不能将 null 放入 admin_id 列,因为它是 null。它还会发出两条通知,内容为 undefined index role_id

奇怪的是,行没有保存,但是 administrators 表上的 admin_id 增加了。

更奇怪的是,我有一个 UnitTest 做同样的事情(字面意思是用相同的代码做同样的事情)并持久化实体。

那么代码测试代码如何工作,但实时 Controller 中的相同代码却不起作用?

编辑:我通过 Ajax 调用 Controller 并且它不会被持久化,但是如果我直接转到使用 ajax 发出请求的 url,它会被持久化两次。一个用于 ajax 发布请求,第二个用于直接在浏览器上链接。我是否错过了一些基本的东西,因为我有一种感觉。

最佳答案

答案是我的数据库被命名为test_suite,mysql认为这是一个测试数据库。我不知道细节,但似乎每个具有 test_ 名称的数据库都被 mysql 以特殊规则记录。正如我所说,我不知道细节,但我无法在那种数据库中创建事务性插入语句。

当我创建一个名为 suit 的新数据库时,一切正常。

This blog post并没有说在测试数据库中禁止事务插入语句,但是将数据库命名为 test_ 似乎是个坏主意。我不知道,不得不通过艰苦的方式学习

关于mysql - Symfony2 和 Doctrine Mysql 测试数据库 Persist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28158311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com