我有一个表tech_note
,我想再有三个表tech_note_es
、tech_note_en
和tech_note_fr
(将来会有更多的表)。并且tech_note
可以同时在这三个表中。
我的想法是附加到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
接收技术注释字段(与上面的字段相同)
技术注释的ID=3。Tech_note_EN具有ID=3,Tech_note_ES具有ID=3
使用新类别编辑:
现在我有这个错误:实体"EVTS\FrontendBundle\Entity\Tech_note_en"具有复合标识符,但使用的ID生成器不是手动分配(Identity,Sequence)。不支持此操作。
技术注意
abstract class Tech_note {
/**
* @var integer $id
*
* @ORMColumn(name="id", type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var datetime $control_date
*
* @ORMColumn(name="control_date", type="datetime")
*/
private $control_date;
/**
* @var string $comment
*
* @ORMColumn(name="comment", type="string")
*/
private $comment;
TECH_NOTE_EN
class Tech_note_en extends Tech_note {
/**
* @var integer $tech_note_id
*
* @ORMId
* @ORMColumn(name="tech_note_id", type="integer")
* @ORMOneToOne(targetEntity="tech_note")
* @ORMJoinColumn(name="tech_note_id",referencedColumnName="id")
*/
private $tech_note_id;
/**
* @var text $symptom
*
* @ORMColumn(name="symptom", type="text")
*/
private $symptom;
/**
* @var text $cause
*
* @ORMColumn(name="cause", type="text")
*/
private $cause;
/**
* @var string $solution
*
* @ORMColumn(name="solution", type="string")
*/
private $solution;
旧类
技术注意
class Tech_note {
/**
* @var integer $id
*
* @ORMColumn(name="id", type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var datetime $control_date
*
* @ORMColumn(name="control_date", type="datetime")
*/
private $control_date;
/**
* @var string $comment
*
* @ORMColumn(name="comment", type="string")
*/
private $comment;
TECH_NOTE_EN
class Tech_note_en
{
/**
* @var integer $tech_note_id
*
* @ORMId
* @ORMColumn(name="tech_note_id", type="integer")
* @ORMOneToOne(targetEntity="tech_note")
* @ORMJoinColumn(name="tech_note_id",referencedColumnName="id")
*/
private $tech_note_id;
/**
* @var text $symptom
*
* @ORMColumn(name="symptom", type="text")
*/
private $symptom;
/**
* @var text $cause
*
* @ORMColumn(name="cause", type="text")
*/
private $cause;
/**
* @var string $solution
*
* @ORMColumn(name="solution", type="string")
*/
private $solution;
您的问题有一个很棒的解决方案,那就是单表继承
这基本上是有一个带有通用字段的中心表,并链接到另一个带有特定字段的表
在您的情况下,我将使用以下体系结构模型:
抽象类TechNote(抽象公共实体,包含公共字段)
>class TechNoteEn扩展TechNote继承公共字段并添加特定EN字段的特定实体)
等等。
我认为这是解决您问题的最佳体系结构解决方案。
这是ORM的工作。
// Assuming $tech_note_en is a Tech_note_en instance
$tech_note_en->getTechNote();
(像这样^^)