2017-07-06 13 views
0
私は以下の表を持って

登録しようのない一方向の関係:単一のテーブルに格納symfonyの1対多のテーブル

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) 

すべてのローカライズ可能なテキストを、そのテーブルに接続されている他のすべてのテーブル。

Countryモデルの書き方はわかりませんが、これは私がこれまでに得た方法です。

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エンティティから取得できません。しかし、私は結合テーブルを作ることを望んでいません、その種の過労、そして全く無意味なので。

+0

は、なぜそれが行き過ぎ/無意味なのですか? –

+0

**企業**テーブルとテーブルを接続したいですか? –

+0

あなたは私の答えを見ることができます。答えがあなたにいくつかの啓発を与えることができるかもしれません。 –

答えて

0

あなたは車輪の再発明している、あなたはあなたのための全体の仕事をするDoctrineExtensions/Translatable behaviorを使用する必要があります。ほとんどあなたが

  • 取得をやっているようなモデルの修正、と

    • ディール直接
    • それを取得し、正しい言語の文字列、...
  • +0

    管理パネルでこれらの文字列を編集する必要があるため、これらの文字列はデータベースに格納されています。もちろん、古いプロジェクトで、リファクタリングや何かの時間がありません。 –

    0

    あなたに知っておくべきことを説明したいと思います。

    我々はtable Atable B、そしてtable Cを持っているとしましょう。

    、その後

    私はそれがIMPOSIBLEであることを教えてくれますなし関係を持つtable Atable B、そしてtable C

    に参加したいです。


    なぜですか?

    実際

    table Atable B、そしてtable C関係を持っている場合、
    それはあなたがあなたのテーブルの上にを登録しよう行っていることを意味します。

    関連する問題