CodeLab技術ブログ

プログラミング技術まとめ

[CakePHP3]ビヘイビア内で呼び出し元のモデルにアクセスするには?

モデルの共通処理をビヘイビアで管理すると、重複した余計なコードを書かずに済みますが、ビヘイビア内で呼び出し元のモデルにアクセスするにはどうしたらよいか?

バージョン
CakePHP3.x

普通に$thisでアクセスできるのかなと思って・・・

class MyBehavior extends Behavior {
    public function func() {
        $entities = $this->find()->all();
    }
}

ってやってみたけどダメでした。

スポンサードリンク

結論としては、_tableメソッドを使ったらうまくいきました。

class MyBehavior extends Behavior {
    public function func() {
        $entities = $this->_table->find()->all();
    }
}

cakebookになぜか書いてないんですよね~。(見落としているだけかもしれないけど)
一番使うパターンだと思うんですが…。

いろんなブログとか見てみたんだけど、初期化時だったり、関数コールするときに自分のモデルを引数として渡して解決しているパターンが多かったですが、そんなことしなくてもいいみたい。

参考
https://book.cakephp.org/3.0/ja/orm/behaviors.html
How to access caller model from behavior in cakephp 3?

スポンサードリンク

コメントは受け付けていません。