Symfony主义:记录意外添加到表中

时间:2018-06-27 20:02:07

标签: php symfony doctrine

在我的Symfony代码中,我使用了Doctrine。 在一个实体(AppBundle \ Entity \ Core \ User)中,我定义了列 foodTypes ,该列与另一个实体(AppBundle \ Entity \ FoodRecording \ FoodType)关联。 我已经定义了 User FoodType 之间的多对多关系,并带有链接表 foodrecording_user ,并加入了 User.username FoodType.foodtype_code 。 代码如下所示。

// Entity\Core\User
namespace AppBundle\Entity\Core;
......
class User implements AdvancedUserInterface, \Serializable {
......
/**
 * @ORM\ManyToMany(targetEntity="AppBundle\Entity\FoodRecording\FoodType")
 * @ORM\JoinTable(name="foodrecording_user",
 *      joinColumns={@ORM\JoinColumn(name="username", referencedColumnName="username", onDelete="CASCADE")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="foodtype_code", referencedColumnName="code", onDelete="CASCADE")}
 *      )
 */
private $foodTypes;

正如预期的那样,我可以获取某个用户的foodTypes,并且一切似乎都很好,直到我偶尔发现...

每次我运行该应用程序时,例如,如果该表中的原始内容是,该程序会意外地在 foodrecording_user 表中添加新记录

username    foodtype_code
30001180    1020
30001180    1660
30001180    320
30001270    1660
30001270    580

然后,使用名为30001180的用户运行该应用程序后,内容将变为:

username    foodtype_code
30001180    1020
30001180    1660
30001180    320
30001270    1660
30001270    580
112         1020
112         1660
112         320

此处112是用户(用户名30001180)的ID(主键)。 这意味着该程序似乎重复了用户的记录,只是用ID(112)替换了用户名(30001180)。

我确定我没有写任何代码来复制数据库中的记录-我只是读出了它们( Select ),而没有进行任何写操作,例如插入更新

谁能告诉我,为什么会这样?我很困惑!

非常感谢。

0 个答案:

没有答案