我有以下表格:
strings
------
"id" int not null primary key
string_texts
------
"id" int not null primary key
"string_id" int not null fk(strings.id)
"language_id" int not null fk(languages.id)
"text" text
"countries"
------
"id" int not null primary key,
"name_id" int not null fk(strings.id)
所有可本地化的文本存储在单个表中,并且每个其他表都连接到该表。
我不知道如何编写国家模型?这就是我到目前为止的方式。
namespace LoginHood\HoodBundle\Entity\Geo;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
class Country
{
/**
* @var int
*
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="SEQUENCE")
*/
protected $id;
/**
* @var Collection
*
* @ORM\OneToMany(targetEntity="StringText", mappedBy="")
*/
protected $names;
/*
...
*/
public function __construct()
{
$this->names = new ArrayCollection();
}
}
由于结构原因,您无法从StringText实体获取Country或任何实体。但是我不想做一个连接表,因为它有点过分,而且完全没有意义。
答案 0 :(得分:0)
我想向你解释一些你应该知道的事情。
假设我们有
table A
,table B
和table C
。
然后
您希望
table A
,table B
和table C
关系而不使用加入
我会告诉你它不可能。
为什么?
实际上,如果
table A
,table B
和table C
有关系, 这意味着你在桌子上做 JOIN 。
答案 1 :(得分:0)
你正在重新发明轮子,你必须使用DoctrineExtensions / Translatable behavior来完成整个工作: