2

OneToMany 関係を持つ 2 つのエンティティEntity1Entity2がありますが、それらは 2 つの MySQL データベースに存在します。

これらのエンティティを Symfony で関係を持って実装するにはどうすればよいですか?

これらのエンティティを実装する 2 つの別個のバンドルを作成することは可能ですか?

4

1 に答える 1

3

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;
    }
}

ここにそれに関する記事があります。

この助けを願っています

于 2016-04-18T21:16:49.080 に答える