私は自分の仕事でアーキテクチャの再設計に取り組んでおり、基本的にはゆるやかに基本的なMVCカスタムソリューションを採用しました。その意図は、システムの各モデルで定義されている標準のCRUD操作と追加のリスト操作を持つことです。PHPの比較的シンプルなCRUDモデルシステムでは、複雑な結合はどこに収まるでしょうか?
残念ながら、私たちのシステムのコードの約30%は複雑な結合を使用していましたが、このモデルに適合しない高度なクエリが使用されていました。つまり、モデルに合うかもしれませんが、リスト関数は巨大で、確かにエラーが発生しやすくなります。これは、書き直しで解決しようとしているものです。
このようなシステムで、複雑で非常に特定のクエリはどこに配置しますか?私たちはいくつかの選択肢をもっていました。
- リストの複数のバージョンを追加/基本的なもの
- に加えて、取得モデルディレクトリ
- の兄弟として存在し、これらのクエリは、このような状況でモデルを使用して追加しないでくださいのためのカスタムモデルに追加します。動作中の作業
私たちはヘルプをアウトソーシングしていますので、私たちは実装と保守性に関してできるだけシンプルにしています。 ORMの解決策や他の重量は問題になりません。
このようなことは、開発者としてどこに見たいですか?
現時点で実際のサンプルにアクセスできない例えば報告を取る。 5つ以上の結合、列のロールアップ、1トンのカウントの追加、カウントアップによる統計の変更などが可能です。私たちはクエリを細かく調整する能力が必要なのでORMが邪魔になることに同意するでしょう。(私たちは1億レコード以上を持っています。)DB300を犠牲にするために若干の間違いがあります。 – methodin
報告が必要ないMVC設定柔軟ではあるが高度にチューニングされただけで、私はReporterモデルを持つようにし、他のモデルはできるだけシンプルに保ちます。これはより多くの "エキスパートレベル"のクエリを分離し、それらのパラメータの使用に近いパラメータ検証を維持するのに役立ちます。 は、その後、あなたのReporterのモデルの中で、私は可能な限りのための構成可能なクエリビルダを使用し_still_だろうが、それはよりは好みの問題だし、普通のSQLを使用するよりも、多かれ少なかれ仕事ですか。 – grncdr