Model
イントロダクション 標準のfindの種類(first, all, count, threaded, neighbor, list)だけでは、ビジネスロジックに対応できないことがあります。 これに対するひとつのプラクティスとしては、カスタムfindタイプを定義することです。 この記事では、実際…
イントロダクション CakePHPでは標準でサービスレイヤを提供していません。 しかし、CakePHPはフレームワークとしてその基礎部分は十分に提供してると言えます。これはアプリケーション側で実装すべきでしょう。 規模が一定を超えるアプリケーションではサー…
イントロダクション CakePHPのhasAndBelongsToMany(以下habtmと呼ぶ)機構は、期待する振る舞いをしないことがあります。 CakePHPはそのマニュアルで、habtmが複雑になったときについてこう言及しています: http://book.cakephp.org/ja/view/1034/Saving-R…
イントロダクション CakePHPの使い方は多種多様で、もちろん一つのやり方が正解ということはありません。 しかし、CakePHPはフレームワークであるわけで、想定された使い方以外ではその真価をなかなか発揮できません。 CakePHPにおけるモデルは、ビジネスロ…
過去記事の問題点 Paginateオプションをモデルに移行する - 24時間CakePHP http://d.hatena.ne.jp/hiromi2424/20100426/1272289702 では、paginateオプション内に"order"や"limit"が無いため、これらオプションを指定すると動作が謎になってしまいました。 …
注意 改善記事を書きました。この記事の例ではうまく動きません。 paginateオプションをモデルに移行する(改善・修正版) - 24時間CakePHP http://d.hatena.ne.jp/hiromi2424/20100609/1276076490 概要 Paginatorを使うとき、group byして集計関数を使った…
1:07更新
1.3からなのか不明。 Model::cacheQueries = true(デフォルトではfalse)とすれば各1回で済む。 ただしsave()またはsaveAll()した後read()とかexists()とかするとバグる可能性があるので、慎重にどうぞ。
チケット投げました http://cakephp.lighthouseapp.com/projects/42648-cakephp-1x/tickets/275-old-habtm-links-should-not-be-deleted-when-new-habtm-links-contain-these#ticket-275-3VirtualFieldsのテストをするとか言っておきながら、Model::__saveMu…