エンティティはバンドル間で共有されます(もちろん)。 ブログを作成したい場合は、UserBundle(これは恐らくFOSUserBundleという素晴らしいものを上書きする可能性があります)とBlogBundleを作成することができます。 UserBundleにはUserエンティティが含まれ、BlogBundleには投稿エンティティとコメントエンティティが含まれます。コードの は今の例:あなたのUserBundleで
:あなたのBlogBundleで
<?php
namespace YourVendorName\UserBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="my_user_table")
* @ORM\Entity(repositoryClass="YourVendorName\UserBundle\Entity\UserRepository")
*/
class User
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(name="name")
*/
private $name;
// Getters and setters...
}
:
<?php
namespace YourVendorName\BlogBundle\Entity;
class Post
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(name="title", type="string", length=255)
*/
private $title;
/**
* @ORM\Column(name="body", type="text")
*/
private $body;
/**
* @ORM\Column(name="created_at", type="datetime")
*/
private $createdAt;
/**
* @ORM\ManyToOne(targetEntity="YourVendorName\UserBundle\Entity\User")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $author;
// Getters and setters
}
ですから、別のバンドルで、このような注釈のおかげで、エンティティを参照:
@ORM\ManyToOne(targetEntity="YourVendorName\UserBundle\Entity\User")
とにかく、あなたは本当にSymfony2 documentation、それはあなたがすべてを理解するのに役立つかもしれません。
あなたの答えはthxです。それはまさに私が探していたものですが、私はすでにその方法について考えていました。既存のデータベースから異なるバンドルへの「自動生成」エンティティの時点でのみスタックされます。しかし、今私はまだいくつかの手が必要であることを認識しました:-)私はこの方法で試してみましょう! – Andreas
あなたの質問が「doctrine:mapping:import」コマンドを使って異なるバンドルにエンティティをディスパッチするのに十分なほどスマートなのかどうかは、答えはいいえ:)あなたはエンティティを良いフォルダに移動するだけです。その教義を忘れないでください:マッピング:インポートはヘルパーに過ぎず、生成されたエンティティを完成させる必要があります。 – Nanocom
あなたはまさにそうです、それはヘルパーツールです。私は今、私のuserbundleで私のユーザーと役割のエンティティを終了し、その後私のblogbundleからの参照を続けます。 – Andreas