やったこと

webサービスを作るときに考えたことを垂れ流します

【CakePHP3】コントローラーから他の名前のテーブルを参照する!

CakePHP3でControllerからテーブルを参照する方法です。

デフォルトでは「$this」の配下にコントローラーと同名のテーブルがあって、それを叩くことでDBを操作できます。

<?php
namespace App\Controller;

use App\Controller\AppController;

class UsersController extends AppController
{
    public function display()
    {
      //ユーザー情報10件取得
      $users = $this->Users->find()->limit(10)->all();
      $this->log($users, "debug");
    }
}


では違うテーブルを参照したい場合はどうすればいいのでしょうか?

それは下記にように「TableRegistry::get」することで可能になります。
「use Cake\ORM\TableRegistry;」の名前空間の宣言も必要なのでお忘れなく。

<?php
namespace App\Controller;

use App\Controller\AppController;
use Cake\ORM\TableRegistry;

class UsersController extends AppController
{
    public function initialize()
    {
      $this->Posts = TableRegistry::get('posts');
    }
    public function display()
    {
      //記事情報10件取得
      $posts = $this->Posts->find()->limit(10)->all();
      $this->log($posts, "debug");
    }
}


こんな簡単なことをするのも一苦労・・・

cakephpもぅマヂ辛い。リスカしょ・・・。