cakePHP ComponentでloadModel

コントローラーでテーブルを扱うときは

$this->loadModel('Billings');
$this->Billings->fuga();

などと使えるがコンポーネントではloadModelがそのまま使えない。

$billings_table = TableLocator->get('Billings');
$billings_table->fuga();

などとすればテーブルを使うことができる。 けどloadModelもModelAwareTraitをuseすれば使えるらしいのでメモする。

<?php
namespace App\Controller\Component;

use Cake\Controller\Component;
use Cake\Datasource\ModelAwareTrait;

class HugaComponent extends Component
{
    // loadModel()を使うために読み込む
    use ModelAwareTrait;

    public function fuga()
    {
        $this->loadModel('Billings');
        $this->Billings->fuga();
    }
}