検索

ホームページ  >  に質問  >  本文

プロジェクトの開発に symfony2.0 の使用に切り替えたので、いくつか質問したいと思います。

以前は symfony1.4+propel を使ってプロジェクトを開発していましたが、今は symfony2.0 に切り替えましたが、doctrine を使ったことはありませんでしたが、公式のデフォルトは doctrine で propel が削除されています。
1. ドクトリンを使用する利点は何ですか?プロップとの関係。プロジェクトはシステムの側面です。
2. prop を使用する場合、group by はあまり役に立たないことがわかりました。
3.教義は多対多の M:N 関係をどのように処理しますか?

さらに、私は教義に関して起こり得る問題を投稿し、他の人を参照します:
1. ドキュメント エラー。署名されていない公式ドキュメントや生成された yml などの追加フィールド オプションを設定するには、オプションを使用します。
2. 外部キーは署名なしまたはデフォルトを指定できません
3. テーブルのリレーションシップは非識別リレーションシップです

ありがとう!

某草草某草草2802日前537

全員に返信(1)返信します

  • 怪我咯

    怪我咯2017-05-16 16:48:03

    「標準」Doctrine でサポートされる関数は、PDO でサポートされるすべてのリレーショナル データベース (MySQL、PostgrelSql など) でサポートされる関数の集合です。つまり、A がサポートするが B がサポートしないものはサポートされません。デフォルトで Doctrine を使用します。ただし、Doctrine はスケーラビリティが高く、サードパーティのコードが豊富です。Google で Doctrine+Extensions を検索すると、たくさんの情報が得られます。

    Doctrine の多対多のサポートは非​​常に優れており、十分です。

    Symfony 2 でも Propel を使用できます。公式 Web サイトのドキュメントには専用の章があります。

    Doctrine と Propel は両方とも優れています (データベース パッケージを自分で作成することも、良い仲間になることもできます)。比較する必要がある場合は、客観的な違いをいくつか挙げることができます。

      Doctrine はデータ マッパー + プロキシ モード、Propel はアクティブ レコード モードです (これは哲学的な質問です)。
    1. Doctrine のコミュニティがより活発になりました;
    2. Symfony 2 は Doctrine の Common ライブラリを使用してアノテーションベースの依存性注入 (DI) を実装します。
    3. Doctrine はより最新 (2.x) で、PHP 5.3 以降の機能サポートが向上していますが、Propel も追いつきつつあります。
    4. 上記のように、あなたが言及した署名なしの機能はデータベース間で使用できないため、当然デフォルトではサポートされていません。ただし、必要に応じてそれを行う方法はたくさんあるため、この回答には触れません。
    Default はデータベース間で使用できる属性ではありませんが、Doctrine の Entity クラスでマップされたメンバー変数のデフォルト値を定義するだけで済みます。

    Doctrine の約束は、ライブラリ間で使用できるということです。この観点から見ると、Doctrine は依然として人々に安心感を与えることができます。結局のところ、PostgreSql や SQLite を使用している人はまだたくさんいるので、一貫性を強制するために MySQL の考え方を使用しないでください。

    返事
    0
  • キャンセル返事