CakePHP 1.2 RC1でTreeBehaviorの絞込み範囲指定が変更となった
Monday, June 09, 2008 06:06:49 PM
<!– more –>TreeBehavior自体1.2から追加された機能なのに、変更になるなんて。。。
1.2βでは
$this->Category->setScope(array('company_id'=>'1'));
$categories = $this->Category->children();
のように書くと、company_idが1のカテゴリだけ階層構造で取得できていたのだが、RC1ではsetScopeがDeprecatedになってしまった。で、上記方法を使っている画面を表示すると、「(TreeBehavior::setScope) Deprecated - Use BehaviorCollection::attach() to re-attach with new settings」というエラーメッセージが出るが、お世辞にもどう変更していいかわかるメッセージじゃないし、ドキュメントにも書いてない。
なので、ソースを読み込むことに。まぁソース読めばわかります。結果としては、
$this->Category->$this->Behaviors->attach('Tree', array('scope'=>array('company_id'=>'1')));
$categories = $this->Category->children();
のように記述するのですが、これを使用箇所で全部変更するのは大変ですね。そこで、Categoryのモデルクラスに以下のようなメソッドを追加してあげました。
function setScope($scope = array()) {
return $this->Behaviors->attach('Tree', array('scope'=>$scope));
}
ま、AppModelに追加しても良かったんですが、全部がTreeBehavior使っている訳ではないと思うので、その場合は、setTreeScopeのような名前に変更した方が良いかな?と思っています。
Recent Articles
- GAE gen1 で動いている PHP5.5 で作った個人開発サービスを gen2 PHP8.2 へ移行した1年記 〜 その 5 2024/05/01
- GAE gen1 で動いている PHP5.5 で作った個人開発サービスを gen2 PHP8.2 へ移行した1年記 〜 その 4 2024/04/30
- GAE gen1 で動いている PHP5.5 で作った個人開発サービスを gen2 PHP8.2 へ移行した1年記 〜 その 3 2024/04/30
- GAE gen1 で動いている PHP5.5 で作った個人開発サービスを gen2 PHP8.2 へ移行した1年記 〜 その 2 2024/03/20
- GAE gen1 で動いている PHP5.5 で作った個人開発サービスを gen2 PHP8.2 へ移行した1年記 〜 その 1 2024/03/20
- PHPカンファレンス関西2024に参加して、オフラインカンファレンスの盛り上がりを体験してきた 2024/02/18
- マルチプルレポをモノレポへコミットログを残しながら移行する 2023/09/27
- tsyringe を TypeScript 5 で使う方法 2023/05/02
- LocalStack を使って aws-sdk の Integration Test を実行する 2023/04/19
- AWS SDK v3 のモジュールと利用方法 2023/04/18
Tags
- PHP
- GAE
- toiletevolution
- phpkansai
- TypeScript
- aws-sdk
- aws-sdk@v3
- Jest
- JavaScript
- AWS
- import maps
- Dependencies Management
- dependabot
- GCP
- asucon
- Polymer
- Polymer.co-edo
- CHIRIMEN
- IoT
- WoT
- CakePHP
- CakeFest
- WebComponents
- ToiletEvolution
- Web Components
- PHPcon
- CakePHP3
- BDD
- Behat
- fixture
- Test
- phpmatsuri
- CoverFlow
- Flex