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