2
私はOneToMany関係を持つ2つのエンティティEntity1とEntity2を持っているが、彼らは2つのMySQLデータベースに住んでいます。symfonyのとDoctrine:クロスデータベースリレーション
symfonyでそれらのエンティティを関係で実装するにはどうすればよいですか?
エンティティを実装する場所が2つに分かれたバンドルを作成することはできますか?
私はOneToMany関係を持つ2つのエンティティEntity1とEntity2を持っているが、彼らは2つのMySQLデータベースに住んでいます。symfonyのとDoctrine:クロスデータベースリレーション
symfonyでそれらのエンティティを関係で実装するにはどうすればよいですか?
エンティティを実装する場所が2つに分かれたバンドルを作成することはできますか?
Doctrineでは、データベース間でデータを結合することは、技術的には設計された機能によって「サポート」されていませんが、Doctrineをちょっとトリックすることによって動作させることができます。
エンティティ間のリレーションシップを構築する場合は、同じ接続、つまり同じデータベースを使用する必要があります。
エンティティクラス内で複数のデータベースを稼働させるには、という名前の接頭辞を持つエンティティのテーブル名をと指定する必要があります。ここでは、アノテーションを使用した例です。
<?php
namespace Demo\UserBundle\Entity;
use DoctrineORMMapping as ORM;
/**
* Demo\UserBundle\Entity\User
*
* @ORMTable(name="users.User")
*/
class User implements
{
/* ... */
}
と
<?php
namespace Demo\PostBundle\Entity;
use DoctrineORMMapping as ORM;
/**
* Demo\PostBundle\Entity\Post
*
* @ORMTable(name="posts.Post")
*/
class Post implements
{
/* ... */
}
と関係テーブル:
<?php
namespace Demo\PostBundle\Entity;
use DoctrineORMMapping as ORM;
/**
* Demo\PostBundle\Entity\Post
*
* @ORMTable(name="posts.Post")
*/
class Post implements
{
/**
* @ORM\ManyToOne(targetEntity="\Demo\UserBundle\Entity\User")
**/
private $user;
/* ... */
/**
* Set user
*
* @param \Demo\UserBundle\Entity\Site $site
* @return Post
*/
public function setUser($user)
{
$this->user = $user;
return $this;
}
/**
* Get user
*
* @return \Demo\UserBundle\Entity\Site
*/
public function getUser()
{
return $this->user;
}
}
Hereそれについての記事。
希望このヘルプ
Grazie!そして、そのデータベース名文字列を設定パラメータとして設定できますか?チャオ! – ShinDarth
doctrineアノテーションを持つ@ShinDarth私は考えられるパラメータを挿入することはできませんが、xmlアノテーションを試して、 '%db_name_1%'でparamsを置くことができますこのヘルプ – Matteo
hi @ ShinDarthあなたは私のソリューションを試しましたか?それは働いていますか? – Matteo