与基地的感情ID

Affection id with the base

我有 3 个实体模块、课程、章节 我有一门课程 1 属于模块 1,课程 2 属于模块 2 我在数据库中注册课程时遇到的问题,它影响了我两门课程的最后一个模块

这是我的代码 包含自 ajax

以来检索到的所有信息的数组
   array:4 [
  0 => array:5 [
    "id" => "itemdat-1"
    "name" => "Module 1"
    "pid" => "1"
    "type" => "Module "
    "parent" => "module_1"
  ]
  1 => array:5 [
    "id" => "itemdat-101"
    "name" => "Module 2"
    "pid" => "1"
    "type" => "Module "
    "parent" => "module_1"
  ]
  2 => array:6 [
    "id" => "itemcour-1"
    "name" => "Cours 1"
    "pid" => "itemdat-1"
    "type" => "Cours "
    "parent" => "cours_1"
    "parentNodes" => array:1 [
      0 => array:1 [
        0 => "module_1"
      ]
    ]
  ]
  3 => array:6 [
    "id" => "itemcour-2"
    "name" => "Cours 2"
    "pid" => "itemdat-101"
    "type" => "Cours "
    "parent" => "cours_2"
    "parentNodes" => array:1 [
      0 => array:1 [
        0 => "module_1"
      ]
    ]
  ]
]

在下面的代码中你可以找到我的代码 我解释我是怎么做的 我在添加数组模块 recupére 的 id 之后管理模块然后在课程中我检查 pid course 是否等于 id 所以我做了一个 findby 并在 base

中设置课程
if ($data = $request->get('moduleconfig_forms')) {
        $jsonData = $request->get('moduleconfig_forms');

        $tabpid =array();
        foreach ($jsonData as $indexs => $modules) {

            $formation = $this->getDoctrine()->getRepository(Formation::class)->find($formationId);
            $emptyModuleConfig = 0;
            if ($modules['type'] == "module") {
                $module = new Module();
                $module->setPid($modules['id']);
                $module->setName($modules['name']);
                $module->setFormation($formation);
                $manager->persist($module);
                $manager->flush();
                array_push($tabpid, $modules['id']);
            }

            if ($modules['type'] == "Cours") {

                $id_courspid = $modules['pid'];

                if (in_array($id_courspid, $tabpid)) {

                    $cours = new Cours();
                    $cours->setName($modules['name']);
                    $cours->setPid($modules['id']);
                    $cours->setModule($module);
                    $manager->persist($cours);
                    $manager->flush();
                }
            }
        }

你的问题出在这段代码:

$cours->setModule($module);

$module 变量在 foreach 循环中设置,并将保留第二个模块的值。

一个选项(取决于课程中引用的模块是否已经在数据库中)是这样做的:

$module = $manager->getRepository(Module::class)->findOneByPid($id_courspid);
$cours->setModule($module);

当然你也可以简单地将每个$module对象存储在一个数组中,其中键是pid,例如$moduleEntities[$module->getPid()] = $module;并稍后在数组中找到正确的$cours->setModule($moduleEntities[$id_courspid])