質問: これまでCakePHP2を我流で勝手に使っていたのですが、 「それじゃフレームワークを使っている意味がないよ」という指摘を受けました。 データの操作に関わる部分を、生のSQLで書いていたり、MySQLにストアドプロシージャを書いて、 実行していたりしたためです。 じゃあ正しいフレームワークの使い方(作法)として、Modelをどう使えばいいのかが、 マニュアル等を読んでもいまひとつわかりません。 仮に以下のような処理を行おうとした場合、 modelのtable/entityにどのような処理を書いていくのがいいのでしょうか? 大変ざっくりとした質問で申し訳ないのですが、お時間のある方、 どうかご教授お願いいたします。 データベースにテーブルが3つあるとします。 tableA / tableB / tableC tableA | id | uriage_kubun | value | date | | --- | --- | --- | --- | | 1 | b | 3000 | 2017-01-02 | | 2 | c | 1000 | 2017-02-03 | | 3 | c | 1500 | 2017-03-04 | | 4 | b | 1800 | 2017-04-07 | | 5 | c | 500 | 2017-04-18 | tableB | id | tableA_id | value | date | | --- | --- | --- | --- | | | | | | tableC | id | tableA_id | value | date | | --- | --- | --- | --- | | | | | | 上記テーブルAにある各レコードに対して、 uriage_kubunの値がbの場合は、tableBに uriage_kubunの値がcの場合は、tableCに コピー(というかinsert)をバッチ処理のように実行したいのです。 根本的かつ基本的なCakePHP3の使い方の問題ですので、 「マニュアル読めよ!」という厳しいご指摘はわかるのですが、 そこをなんとか飲み込んでいただき、ご教授いただけないかと思います。 よろしくお願いたします。
回答: > > 「それじゃフレームワークを使っている意味がないよ」という指摘を受けました。 > > データの操作に関わる部分を、生のSQLで書いていたり、MySQLにストアドプロシージャを書いて、 > > 実行していたりしたためです。 > > > この状況では、その指摘は気にしなくていいと思います。というのも、CakePHPなどのWebフレームワークは、基本的にデータ1件単位で扱う**CRUD**機能を便利に構築する、ということを主眼に作ってあって、データベースのバッチ処理向けというわけでは、必ずしもないからです。 DB-DBのデータ変換であれば、直接DB実行やストアドで実行のほうが向いている場合もあります(PHPで処理しようとすれば、最低限データの往復が必要となってしまいます)。