私はCakePHP 3でアプリケーションを構築しています。これは、Cakeの規約では構築されていない多くのレガシーデータベースを使用しています。CakePHP 3 - カスタムSQLコードを置く場所
Cakeが提供するORM機能を使用したくないのですが、「Raw SQL」というだけでなく、すべての関係を設定するのが面倒です。また、データベース構造を変更することもないため、ORMは非スターターです。だから私はすべてのための生のSQLクエリを書くつもりです。
ただし、私は確信していませんここではこのコードが置かれます。私はhttps://book.cakephp.org/3.0/en/orm/database-basics.html#running-select-statementsを読んだことがありますが、実際にそのコードをどこに置くかは言いません。
MVCの目的を凌駕するので、コントローラにクエリを追加するのは理想的ではありません。
私が本当に必要とするのは、すべてのクエリを別の関数に入れて、それらをコントローラで参照できるモデルです。
ケーキ2.xでは、app/Model/
の下にモデルを作成するだけで、コントローラーに必要な場所に(loadModel
)をロードするのは簡単でした。しかし、新しいCake 3.x Table
とEntity
のスペースでは、これはどのようにフィットするのか分かりません。
私はModelless Formsでも読んでいますが、どちらかが正しいとは思いません。例えば、アプリケーションの最初のページには、SELECT
という文である化学物質のリストが表示されます。この段階では、フォームやユーザー入力は一切含まれていません。
明らかに、コントローラーからモデルにデータを渡す必要がある状況もあります。ユーザーの入力に基づいてクエリを実行します。
アドバイスをいただければ幸いです。
も参照してください?あなたは構成作業のビットのために、ORMの力とそれに関連するすべてのものを捨てたいのですか?私にとって良い貿易、おそらくは貿易取引の歴史における最悪の貿易取引のようには思えません;)CakePHPは単なるPHPであり、好きな場所で好きなクラスを作ることができますモデル関連ロジックの適切な場所は、当然「モデル」名前空間になります。 – ndm
@ndm、私はあなたの言うことに完全に同意します。私はそれを私が計画したやり方ではなく、約5つのデータベースを持っているアイデアを与えることを望んでいます - ケーキの慣行を使用していません。それぞれに約20のテーブルがあります。あなたは100以上のもののキーとリレーションの名前を書いていますか?または私は私の心の中でそれを複雑にしていますか?他のアプリケーションがコード化されているため、データベースレベルでは何も変更できません。したがって、すべてのモデルで定義する必要があります。たくさんのデータベース結合 - ORMを使用する方が簡単か、SQLを書くだけですか?それは私には難しいようです:) – Andy
ちなみに、ファイルを置く場所の例(おそらく 'src/Model'にあります)と、ORM以外のやり方をしている場合、コントローラにロードする方法を教えてください。 – Andy