我有一张 table tech_note
我想要多 3 张 table tech_note_es
, tech_note_en
和tech_note_fr
(将来会有更多 table )。还有tech_note
可以同时在3个表中。
我的想法是附加到tech_note_en
并自动接收来自 tech_note
的属性.
第二次编辑:
我想要这样的东西:我在 Tech_note_EN by ID=3
中搜索(我接收来自 tech_note_EN with ID=3
的字段和字段 tech_note with ID=3
。
但是如果我搜索Tech_note_ES BY ID=3
(我接收来自 tech_note_ES with ID=3
的字段和来自 tech_note with ID=3
的 tech_note 字段(与上面相同的字段)
技术说明的 ID=3。 Tech_note_EN 的 ID=3,Tech_note_ES 的 ID=3
编辑新类:
现在我遇到了这个错误: 实体“EVTS\FrontendBundle\Entity\Tech_note_en”具有复合标识符,但使用 ID 生成器而不是手动分配(身份、序列)。不支持此功能。
技术说明
abstract class Tech_note {
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var datetime $control_date
*
* @ORM\Column(name="control_date", type="datetime")
*/
private $control_date;
/**
* @var string $comment
*
* @ORM\Column(name="comment", type="string")
*/
private $comment;
<小时/>
TECH_NOTE_EN
class Tech_note_en extends Tech_note {
/**
* @var integer $tech_note_id
*
* @ORM\Id
* @ORM\Column(name="tech_note_id", type="integer")
* @ORM\OneToOne(targetEntity="tech_note")
* @ORM\JoinColumn(name="tech_note_id",referencedColumnName="id")
*/
private $tech_note_id;
/**
* @var text $symptom
*
* @ORM\Column(name="symptom", type="text")
*/
private $symptom;
/**
* @var text $cause
*
* @ORM\Column(name="cause", type="text")
*/
private $cause;
/**
* @var string $solution
*
* @ORM\Column(name="solution", type="string")
*/
private $solution;
<小时/>
<小时/>
旧类(class)
技术说明
class Tech_note {
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var datetime $control_date
*
* @ORM\Column(name="control_date", type="datetime")
*/
private $control_date;
/**
* @var string $comment
*
* @ORM\Column(name="comment", type="string")
*/
private $comment;
<小时/>
TECH_NOTE_EN
class Tech_note_en
{
/**
* @var integer $tech_note_id
*
* @ORM\Id
* @ORM\Column(name="tech_note_id", type="integer")
* @ORM\OneToOne(targetEntity="tech_note")
* @ORM\JoinColumn(name="tech_note_id",referencedColumnName="id")
*/
private $tech_note_id;
/**
* @var text $symptom
*
* @ORM\Column(name="symptom", type="text")
*/
private $symptom;
/**
* @var text $cause
*
* @ORM\Column(name="cause", type="text")
*/
private $cause;
/**
* @var string $solution
*
* @ORM\Column(name="solution", type="string")
*/
private $solution;
最佳答案
有一个很棒的解决方案可以解决您的问题,即 single table inheritance
其作用基本上是拥有一个包含常规字段的中心表,并链接到具有特定字段的其他表。
在你的情况下,我会使用这个架构模型:
抽象类TechNote(抽象公共(public)实体,包含公共(public)字段)
class TechNoteEn extends TechNote(继承公共(public)字段并添加特定 EN 字段的特定实体)
等等。
我发现这是解决您的问题的最佳架构解决方案。
关于mysql - 我可以使用MySQL建立Symfony2 ORM继承关系吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29791591/