与基地的感情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])
我有 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])