以前は symfony1.4+propel を使ってプロジェクトを開発していましたが、今は symfony2.0 に切り替えましたが、doctrine を使ったことはありませんでしたが、公式のデフォルトは doctrine で propel が削除されています。
1. ドクトリンを使用する利点は何ですか?プロップとの関係。プロジェクトはシステムの側面です。
2. prop を使用する場合、group by はあまり役に立たないことがわかりました。
3.教義は多対多の M:N 関係をどのように処理しますか?
さらに、私は教義に関して起こり得る問題を投稿し、他の人を参照します:
1. ドキュメント エラー。署名されていない公式ドキュメントや生成された yml などの追加フィールド オプションを設定するには、オプションを使用します。
2. 外部キーは署名なしまたはデフォルトを指定できません
3. テーブルのリレーションシップは非識別リレーションシップです
ありがとう!
「標準」Doctrine でサポートされる関数は、PDO でサポートされるすべてのリレーショナル データベース (MySQL、PostgrelSql など) でサポートされる関数の集合です。つまり、A がサポートするが B がサポートしないものはサポートされません。デフォルトで Doctrine を使用します。ただし、Doctrine はスケーラビリティが高く、サードパーティのコードが豊富です。Google で Doctrine+Extensions を検索すると、たくさんの情報が得られます。
Doctrine の多対多のサポートは非常に優れており、十分です。
Symfony 2 でも Propel を使用できます。公式 Web サイトのドキュメントには専用の章があります。
Doctrine と Propel は両方とも優れています (データベース パッケージを自分で作成することも、良い仲間になることもできます)。比較する必要がある場合は、客観的な違いをいくつか挙げることができます。
Doctrine はデータ マッパー + プロキシ モード、Propel はアクティブ レコード モードです (これは哲学的な質問です)。- Doctrine のコミュニティがより活発になりました;
- Symfony 2 は Doctrine の Common ライブラリを使用してアノテーションベースの依存性注入 (DI) を実装します。
Doctrine はより最新 (2.x) で、PHP 5.3 以降の機能サポートが向上していますが、Propel も追いつきつつあります。 -
- 上記のように、あなたが言及した署名なしの機能はデータベース間で使用できないため、当然デフォルトではサポートされていません。ただし、必要に応じてそれを行う方法はたくさんあるため、この回答には触れません。
Default はデータベース間で使用できる属性ではありませんが、Doctrine の Entity クラスでマップされたメンバー変数のデフォルト値を定義するだけで済みます。