私の問題です。私はバンドルの中にいくつかのエントリーを持っています。私は映画を管理するためのバンドルを作ろうとしています。しかし、いくつかのケースでは、俳優も取締役になることができ、またその逆も可能です。だから私はそれらを「アーティスト」と名付けました。そして、各ムービー、ムービーエンティティで、私は監督として2人の「アーティスト」を、俳優としては2人、脚本家/脚本家としてカップルを割り当てたいと思います。しかし、ManyToMany関係でArtistエンティティを複数回参照することはできません。ここに私がしようとしているもの:DoctrineとSymfony2複数のmanytomanyの参照
/**
* @ORM\Entity
* @ORM\Table(name="movies")
*/
class Movie
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=100)
*/
protected $title;
/**
* @ORM\Column(type="string", length=100)
*/
protected $image;
/**
* @ORM\ManyToOne(targetEntity="Artist", inversedBy="movies")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id")
*/
protected $actors;
/**
* @ORM\ManyToOne(targetEntity="Artist", inversedBy="movies")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id")
*/
protected $directors;
/**
* @ORM\ManyToOne(targetEntity="Artist", inversedBy="movies")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id")
*/
protected $writers;
どうすればこの問題を回避できますか?
なぜ多対1ですか?アクターが映画内で複数の役割を持っている(つまり、演技を指揮し、同時に演技する)場合はどうなりますか?私はいくつかの俳優がこれをしたと信じています。それは次にmanytomanyだろうか??? – user1158667
これは映画エンティティではありません。これは、多対多を使用するときに生成される1つの教訓のように、2つのエンティティを結合するために使用されるエンティティです。この方法で、ムービーエンティティ、ロールエンティティ、およびこのエンティティを結合します。アーティストにムービーを追加する場合は、このエンティティ(ムービーロール)に関連するムービー、アーティスト、およびロールを追加します。ムービーエンティティとロールエンティティは互いを認識せず、このテーブルだけがエンティティとロールエンティティ間を接続します。この方法で、あなたは同じ映画にあなたが好きなだけ多くアーティストを追加することができます。 –
それでなぜ多くの人がいますか?どのアーティストも役割を持つことができますが、1人のアーティストだけが役割を果たしているからです。私はこれを正しく得ていますか? – user1158667