コントローラー以外でもModelを使いたい場合ってありますよね?
え?使うなって。でもコンソールとかコンポーネントとかで使いたい場合あるでしょう?
そんなときの方法です。
環境
CakePHP4(たぶんCakephp3も同じ)
方法
traitを使ってModelAwareTraitを組み込めばOKです。
今回は、Seederで使いたかったのでその例を
以前のCakePHP独自の方法で他のモジュールを読みこんでいたのですが、現在はPHP自体の一般的な機能のtraitを使っているのでわかりやすいですね。 いやーtraitって便利ですね~。
因みに、別の方法でモデルを呼び出す方法もあります。
use Cake\ORM\TableRegistry; $user = TableRegistry::getTableLocator()->get('users');
TableRegistryはTraitじゃない普通のClassなんでclassの外側でuseしておくだけで使えます。
どっち使ってもいいと思いますが、メモリの使用量や動作スピードを考慮すると、クラス内の複数のメソッドで使いたい場合はloadModel、一つのメソッド内だけで使う場合はTableRegistryを使うといいかと思います。