質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

2回答

5112閲覧

モデルから別モデルを使う場合ってどうしてますか?

kazu56

総合スコア51

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

3クリップ

投稿2015/02/17 04:01

モデルから別のモデルを使う場合、App::usesを使う方法とApp::importを使う方法とClassRegistry::init();を使う方法があると思います。

私のところでは、モデルを規約から外れる配置してないことと、遅延ロードでパフォーマンスが上がることから、App:usesを使っています。

みなさんのところではどのような考えで何を使っているかご教授いただけますでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

そのような場面には、まだ遭遇していませんが
AppModel.phpにloadModelを実装しちゃうかもしれないです。

あとビジネスロジックはModelに関連ない場合、Componentsに実装していました。

投稿2015/02/19 07:42

icham

総合スコア559

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazu56

2015/02/19 08:18

回答ありがとうございます。 App::usesだけで書くとコード量が多くなってしまうので、実際は、loadModelのようなものを作ってそこへ使用するモデルを渡すだけという形にしています。 Componentsにビジネスモデルを書く方法については最近知りました。 モデルに書くよりもComponentsに書いた方が、AuthコンポーネントやSessionコンポーネントなどがそのまま使えるし便利だと思いました。 最初は話を聞いたときは違和感があったのですが、つまりは、コントローラーから再利用可能な形で呼びだすことができればいいので、いわゆるFatModelという言葉にこだわらなくてもいいのかなと思いました。 さらに別のところで読んだ記事によるとCakePHPコア開発者のJoseもComponentsを使うように書いているらしいです。 最後、話がそれました。この議論についても別のところで質問したいと思います。
guest

0

モデルから、別のモデルを使う場合とはどのような時なのでしょうか?
私の経験上、データを取得する際には、コントローラ側で複数のモデルを定義しているためモデル内で複数のモデルを読み出すという条件が余り無いのですが?
それとも、データを登録する場合登録条件によってモデルを変更するような仕様等が有るのでしょうか?

基本的なコントローラとモデルの概念では、モデル間のみでのやり取りという事が余り聞いた事が無いので・・・。

コントローラの機能とモデルの機能の切り分けがうまく出来ていないのではないかと思うのですが。

投稿2015/02/18 11:23

takayukiinaba

総合スコア1158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazu56

2015/02/19 07:29

すみません、説明が不足していました。 useTable = falseとして、モデルをService層として使う場合の話です。 ここに議論が多々あると思いますが、自分のところでは、各テーブルに対応しているモデルには、永続的なプロパティ(例えば、$primarykey)などを定義して、useTable = falseとしたモデルにビジネスロジックを記述しています。コントローラーにはビジネスロジックの記述はしていません。 質問は、Service層としてのモデルから、テーブルに対応したモデルの使う場合に、どのように読み込んでいるかという質問になります。
takayukiinaba

2015/02/19 09:40

なるほど・・・ そういう事だったんですね。 私もその様な場合は、App::usesで記述したりしています。 ただ、コード量が多くなるのと不具合を検索するときにあっちこっちに移動するので少々手間かなっと思っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問