リファクタリングの一環として、Propel 1.7 をレガシー php プロジェクトに追加しようとしています。schema.xml ファイルを生成し、多対多の関係を追加しています。
ただし、3 方向の多対多の関係をエンコードするテーブルがあるため、主キーとして 3 つの列があり、それぞれが異なるテーブルの異なる id 列を参照します。
基本的に、ウェブサイトは国と言語によって定義される概念です。
ads_to_websites:
ad_id | country_id | lang_id
参照する
ads->id
country->id
lang->id
これは Propel でサポートされていますか? 外部キーと主キーを schema.xml に追加する方法は理解していますが、テーブルを介して結合したい場合はどうなりますか? isCrossRef を使用できますか? ドキュメントは少しあいまいです。
または、新しいテーブルを作成する必要があります。
websites:
id | country_id | lang_id
を参照して
country->id
lang->id
と
ads_to_websites:
website_id | ad_id
を参照して
websites->id
ads->id
これは可能であり、データモデルに適合すると思いますが、実装するのは面倒です(別のプロジェクトが同じデータベースを使用しています)。
あるいは、Doctrine のような別の ORM でこれをよりうまく行うことができますか?