Php 与基地的关系
我有3个实体模块,课程,章节 我有一门课程1属于模块1,课程2属于模块2 我在数据库中注册课程时遇到的问题,会影响到两门课程的最后一个模块 这是我的密码 包含自ajax以来检索到的所有信息的数组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" =>
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);如果有效,请将问题标记为已解决,并将此答案标记为正确答案,然后再投票:)