3

fooプロパティidbarおよびを含むエンティティがありますbaz。マップされていないプロパティに基づいて、2 つの異なるテーブル (foo1と など) に同じエンティティを入力できますか? エンティティのコードは次のようになります。foo2baz

class foo {

  /**
  * @ORM\Column(name="id", type="integer")
  * @ORM\Id
  */      
  private $id;

  /**
  * @ORM\Column(name="bar", type="string")
  */
  private $bar;

  /**
  * Property not mapped in the database
  */
  private $baz; 
}

の値bazが 1 の場合はエンティティを table に保存しfoo1、 の値bazが 2 の場合は table に保存しますfoo2。保存するテーブルをどこで選択できますか?

4

2 に答える 2

0

$baz 属性が絶対に必要ですか? また、それをどのように決定しますか?

役立つかもしれない簡単な解決策は、抽象 foo クラスを作成し、それから継承してデータベースの関係を行う 2 つのクラスを作成することです。

例は次のとおりです。

abstract class foo {

  /**
  * @ORM\Column(name="id", type="integer")
  * @ORM\Id
  */      
  protected $id;

 /**
 * @ORM\Column(name="bar", type="string")
 */
 protected $bar;
}


/* @ORM\Table(name="foo1")
* @ORM\Entity(repositoryClass="yourRepo")
*/
foo1 extends foo{
}

/* @ORM\Table(name="foo2")
* @ORM\Entity(repositoryClass="yourRepo")
*/
foo2 extends foo{
}

これほど簡単に機能するかどうかはわかりませんが、役立つかもしれません。

これを行うのに役立つドキュメント: http://docs.doctrine-project.org/en/2.0.x/reference/inheritance-mapping.html

お気軽に編集/修正してください。私はこれにかなり慣れていませんが、アイデアが役立つと思います.

于 2013-04-16T14:20:56.080 に答える