2010-07-13に投稿

HABTMの注意事項

CakePHP1.2でloadModelを使ってモデルを用意することがあるが、
その際予期していたクラスでなく、AppModelが入ってくることがある。

ひとつの原因として、綴りミスがある。
しかし綴りは合っているのにAppModelになってしまったり、
loadModelする場所によってAppModelになったりちゃんとしたクラスが呼び出されたりする。

この原因はHABTMにある場合がある。

たとえばposts, posts_tags, tagsというテーブルがあったとする。
この時、posts_controller.phpでは自動的にposts_tagsとtagsが初期化されるのだが、
この時連結であるposts_tagsがAppModelとして初期化されていた。
そのため、以後loadModelでPostsTagを呼びだすとAppModelとして返ってきてしまい、
PostsTagに宣言してあった関数などが呼び出せなくなったりしてしまう。
(すべての環境、バージョン等でそうかは知らない)

対処法としては、PostモデルのHABTM以外にhasManyとしてPostsTagを宣言しておけば良い。
ご注意を。

ツイッターでシェア
みんなに共有、忘れないようにメモ

だら@Crieit開発者

Crieitの開発者です。 Webエンジニアです(在宅)。大体10年ちょい。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel, React, Flutter, Vue.js, Node, RoR 趣味:Elixir, Phoenix, Nuxt, Express, GCP, AWS等色々 PHPフレームワークちいたんの作者

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント