Php 与基地的关系

Php 与基地的关系,php,symfony,symfony4,Php,Symfony,Symfony4,我有3个实体模块,课程,章节 我有一门课程1属于模块1,课程2属于模块2 我在数据库中注册课程时遇到的问题,会影响到两门课程的最后一个模块 这是我的密码 包含自ajax以来检索到的所有信息的数组 array:4 [ 0 => array:5 [ "id" => "itemdat-1" "name" => "Module 1" "pid" => "1" "type" => "Module " "parent" =>

我有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"
      ]
    ]
  ]
]
在下面的代码中,您可以找到我的代码 我解释我是怎么做的 我在添加阵列模块的id后管理模块,然后在课程中检查pid课程是否等于id,因此我做了一个findby,并在基础中设置课程

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,例如
$moduleenties[$module->getPid()]=$module并稍后在数组中找到正确的($code>$cours->setModule($modulentities[$id\u courspid])

感谢您根据我的理解重播我必须添加的内容,如果($modules['type']==“cours”){$moduleRepository=$moduleRepository->findBy(数组('pid'=>$tabpid)),并且我设置了$cours->setmodulerepository($moduleRepository);如果有效,请将问题标记为已解决,并将此答案标记为正确答案,然后再投票:)