php - Symfony 4 - 无法持续级联我的实体(错误:通过关系找到了一个新实体)
问题描述
在我的 symfony 4 项目中,我有:
GroupeValidateurs.php:
/**
* @ORM\OneToMany(targetEntity="App\Entity\Validateur", mappedBy="groupeValidateurs", orphanRemoval=true, cascade={"persist", "remove"})
* @ORM\OrderBy({"ordre" = "ASC"})
*/
private $validateurs;
Validateur.php:
/**
* Ordre de validation
* @ORM\Column(type="integer")
* @Gedmo\Mapping\Annotation\SortablePosition
*/
private $ordre;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="validateurs")
* @ORM\JoinColumn(nullable=false)
*/
private $validateur;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\GroupeValidateurs", inversedBy="validateurs")
* @ORM\JoinColumn(nullable=false)
*/
private $groupeValidateurs;
和User.php
/**
* @ORM\OneToMany(targetEntity="App\Entity\Validateur", mappedBy="validateur", orphanRemoval=true, cascade={"persist"})
*/
private $validateurs;
当我在 GroupeValidateurs 页面上时:
如果我添加一个新的“Validateur”(在示例中,我将添加 KELLEN Russel),然后提交,我有这个:
HTTP 500 内部服务器错误通过关系“App\Entity\GroupeValidateurs#validateurs”找到了一个新实体,该实体未配置为对实体进行级联持久操作:KELLEN Russel。要解决这个问题:要么在这个未知实体上显式调用 EntityManager#persist(),要么配置级联在映射中保持此关联,例如 @ManyToOne(..,cascade={"persist"})。
根据错误消息,我添加cascade={"persist", "remove"})
了GroupeValidateurs#validateurs
但问题是一样的
有人能帮助我吗 ?
更新:当我编辑我的“GroupeValidateurs”以添加新的“Validateur”时,我有我的功能服务:
/**
* Edite un groupe validateurs
*
* @param array $oldUsers
* @param array $newUsers
* @param GroupeValidateurs $nouveauGroupe
* @return array $flash message $flash
*/
public function editGroupeValidateurs($oldUsers, $newUsers, GroupeValidateurs $nouveauGroupe)
{
if ($this->isValidGroupeValidateurs($nouveauGroupe)) {
$comparaison = $this->compareBeforeAfter($oldUsers, $newUsers);
$this->updateValidationAbsences($nouveauGroupe, $this->getAbsencesFromGroupe($nouveauGroupe));
$this->isValidatorOtherGroup($comparaison["validateursSupprimes"], $nouveauGroupe);
$this->traiterRoleSuperValidateurEdit($oldUsers, $newUsers, $nouveauGroupe);
$this->traiterRoleChefServiceEdit($oldUsers, $newUsers, $nouveauGroupe);
$this->setRolesValidateurs($nouveauGroupe);
foreach($nouveauGroupe->getValidateurs() as $validateur)
{
$this->manager->persist($validateur);
}
$this->manager->persist($nouveauGroupe);
$this->manager->flush();
所以我做了一个循环来持久化“GroupeValidateurs”的所有“Validateur”
解决方案
推荐阅读
- c# - 如何在 .net 核心中哈希密码等于 .net 框架
- android - 如何在没有 ActionBar 的片段中实现 SeachView
- javascript - 为什么 Vue.js 使用单字标签
,这违反了自己的风格指南? - algorithm - 如何判断两个序列是否因排列不同?
- python - 在 DataFrame pandas 中合并两列
- phpstorm - 如何在 PhpStorm 上使用 Codecept 和 Puppeteer 包
- python-3.x - 用于二维数组的 numpy loadtxt
- c++ - 如何不从矢量 C++ 中打印选定的元素/元素
- python-3.x - xirr: TypeError: 'float' 对象不可调用
- python - 使用 while 循环创建类的 x 个实例 - python