我试图坚持两个实体,它们有一对一和多对一的关系。
我正在尝试将表单集合嵌入到表单中。
我有一个多对一相关的实体,每次我创建一个新的课程简历,它与Candidat列相关candidat_id_id为空。
除了数据可数据中的Candidat id之外,只有实体Curendar umVitae被成功创建和持久化。
id|titre|candidat_id_id|id_education
candidat_id_id是:null
id\U教育具有以下价值:条令\公共\收藏\ArrayCollection@000000003d585f990000000052235238
id |描述| id\U履历表\U简历id
我的问题是id\U履历和id\U教育。
简历实体:
/**
* CurriculumVitae
*
* @ORM\Table(name="curriculum_vitae")
* @ORM\Entity(repositoryClass="GE\CandidatBundle\Repository\CurriculumVitaeRepository")
*/
class CurriculumVitae
{
/**
* @var Candidat
*
* @ORM\ManyToOne(targetEntity="GE\CandidatBundle\Entity\Candidat")
*/
protected $candidatId;
/**
* @var Education
* @ORM\OneToMany(targetEntity="GE\CandidatBundle\Entity\Education", mappedBy="idCurriculumVitae", cascade={"persist", "remove"})
* @ORM\Column(name="id_education")
*/
protected $educations;
/**
* Add education
*
* @param \GE\CandidatBundle\Entity\Education $education
*
* @return CurriculumVitae
*/
public function addEducation(\GE\CandidatBundle\Entity\Education $education)
{
$this->educations[] = $education;
$education->setCurriculumVitae($this);
return $this;
}
/**
* Remove education
*
* @param \GE\CandidatBundle\Entity\Education $education
*/
public function removeEducation(\GE\CandidatBundle\Entity\Education $education)
{
$this->educations->removeElement($education);
}
}
教育实体:
/**
* Education
*
* @ORM\Table(name="education")
* @ORM\Entity(repositoryClass="GE\CandidatBundle\Repository\EducationRepository")
*/
class Education
{
...
/**
* @var CurriculumVitae
* @ORM\ManyToOne(targetEntity="GE\CandidatBundle\Entity\CurriculumVitae")
*/
private $idCurriculumVitae;
}
简历控制员:
class CurriculumVitaeController extends Controller
{
/**
* Creates a new curriculumVitae entity.
*
* @Route("/candidat/cv/ajouter", name="cv_new")
* @Method({"GET", "POST"})
*/
public function newAction(Request $request)
{
$curriculumVitae = new Curriculumvitae();
$form = $this->createForm('GE\CandidatBundle\Form\CurriculumVitaeType', $curriculumVitae);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($curriculumVitae);
$em->flush();
$request->getSession()
->getFlashBag()
->add('infoCv', 'Votre cv a été bien enregistrée.');
return $this->redirectToRoute('cv_show', array('id' => $curriculumVitae->getId()));
}
return $this->render('curriculumvitae/new.html.twig', array(
'curriculumVitae' => $curriculumVitae,
'form' => $form->createView(),
));
}
}
课程简历类型:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('candidat', EntityType::class, array(
'class' => 'GECandidatBundle:Candidat',
'choice_label' => 'id',
'multiple' => false,
))
->add('educations',
CollectionType::class, [
'entry_type' => EducationType::class,
'allow_add' => true,
'allow_delete' => true,
'prototype' => true,
'by_reference' => false,
'label' => 'Educations:'
]
)
;
}
对不起,我发现了我的问题。
必须在控制器中定义id。
$curriculumVitae->setCandidat($candidat);
尝试此代码并更新您数据库的模式/** * @var Curendar umVitae*@ORM\ManyToOne(Target etEntity="GE\CandidatBundle\Entity\Curendar umVitae")*@ORM\JoinCol列(name="CandidatId",引用的列名称="id", onDelete="SET NULL")*/Private$idCurendar umVitae;
两个表格: 实体类(基本结构): SQL查询和结果: JPQL查询: *我知道我在上面给定的结构中没有它,但我想知道如何正确操作。我该如何从“ManyToOne”、“OneToOne”等选项中进行选择。 如何修改实体类和JPQL查询以获得与SQL查询相同的结果?我一直在尝试各种各样的事情,但都不管用。它不允许我创建两个具有相同列名的字段,也不允许我将字符串定义为@JoinColumn。我几乎成功了
问题内容: 有一个实体类“ A”。A类可能具有相同类型“ A”的子级。如果“ A”是孩子,则也应保留它的父母。 这可能吗?如果是这样,我应该如何在Entity类中映射关系?[“ A”有一个id列。] 问题答案: 是的,这是可能的。这是标准双向@ManyToOne/ @OneToMany关系的特例。之所以特别是因为关系两端的实体都是相同的。JPA 2.0规范的第2.10.2节详细介绍了一般情况。 这
我的实体之间存在多对多关系:和。当我想在我的Symfony项目中将添加到订单时,我总是收到以下错误消息: 属性“suppliers”在类“Acme\AppBundle\Entity\PurchaseOrder”中不是公共的。也许您应该创建方法“setSuppliers()”? 当我自己在Entity中创建函数时: 我收到以下错误消息: 可捕获的致命错误:传递给Doctrine\通用\集合\Arra
我有如下三个实体: -available-teams(由管理员管理) -player-preconfig(由管理员管理) -player-self](由User(Player本身)管理) 在此输入图像说明 可用团队: -->所有可用团队 player-preconfig: -->在这里,管理员可以预选允许玩家参加的队伍。(first-filter-many2many:available-teams
我有如下三个实体: -available-teams(由管理员管理) -player-preconfig(由管理员管理) -player-self](由User(Player本身)管理) 在此输入图像说明 可用团队: -->所有可用团队 player-preconfig: -->在这里,管理员可以预选允许玩家参加的队伍。(first-filter-many2many:available-teams
救命啊!我只在一对多关系数据库中插入POJO时遇到问题。我有POJO和误解如何插入数据库中的所有列表??? 请帮帮我伙计们!