への間接的な一つは、私が唯一this questionを思い付きました。私が知りたいのは、その質問とは正反対であるので、私はそれを構築しています。同じエンティティを考える:ドクトリン2 - 間接的な団体を探して多くの後、多くの関連
class Continent {
/**
* @ORM\Id
* @ORM\Column(type="integer", name="id")
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Country", mappedBy="continent")
*/
private $countries;
}
class Country {
/**
* @ORM\Id
* @ORM\Column(type="integer", name="id")
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Continent", inversedBy="countries")
* @ORM\JoinColumn(name="continent_id", referencedColumnName="id")
*/
private $continent;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\City", mappedBy="country")
*/
private $cities;
}
class City {
/**
* @ORM\Id
* @ORM\Column(type="integer", name="id")
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Country", inversedBy="cities")
* @ORM\JoinColumn(name="country_id", referencedColumnName="id")
*/
private $country;
}
おそらく、国のコレクションと同じようにフィールドに、カスタムクエリを毎回構築することなく、大陸内のすべての都市のコレクションを持ってする方法はありますアノテーションや多分動的マッピングを介して?
私が考えることができる唯一の方法は、リポジトリのfind...
メソッドをオーバーライドすることです。フィールドの追加をどのように正確に達成できたかわかりません。そして、国をループして新しい都市に都市を追加します。コレクション、またはカスタムクエリを完全に使用することができます。あなたのマッピングについてのコメント
動作したらこの設定で何をするつもりですか? – Doug
あなたが大陸のすべての都市を持っていたい場合、各国のすべての都市を大陸で作成する機能を作成します – Edwin
これは私が必要とする設定ではありませんが、使用するのに十分な直感的な例でした。私の実際のシナリオには、実際には地理的な領域が含まれています。このプロジェクトには、Symfonyダッシュボードと、RESTful API経由でデータにアクセスするモバイルアプリが含まれています。アプリのデザイン時に「大陸」の計画は立てていませんでした。それが追加されたとき、互換性については何の注意も払われず、新しい "City"を登録するときにアプリは "Continent"を送信せず、 "Continent"もnullにすることはできません。すべての「都市」には「国」があり、すべての「国」は「大陸」にあるので、それは道のりです – Mismatch