- 更新日: 2016年2月22日
- PHP & CakePHP
CakePHPで全てのモデル/テーブル名一覧を取得
スポンサーリンク
CakePHP 3 の開発で、モデル名(DBテーブル名)の一覧を取得したい機会がありました。ConnectionManager を通して、SchemaCollection の listTables() メソッドを使うことで取得できました。
— 環境 —
PHP 5.5.19
CakePHP 3.1.1
【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
スポンサーリンク
CakePHP コンソールでの確認
調べたところ、以下のようにすればモデル名/テーブル名の一覧を取得できることが分かりました。記事末尾の StackOverFlow リンク先などに、いくつか情報があります。
まずは、CakePHP のコンソールで動作確認を試してみた。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ bin/cake console >>> use Cake\Datasource\ConnectionManager; => false >>> use Cake\ORM\TableRegistry; => false >>> ConnectionManager::get('default')->schemaCollection()->listTables(); => [ "articles", "phinxlog", "users", ] |
phinxlog というのは、CakePHP 3 のマイグレーション機能を担う Phinx が使うログ用のテーブル。なので、必要ない場合は除外するなど。
コントローラー等で使う場合
以上のとおりにモデルのテーブル名を取得できるので、コントローラーの中などで必要なときは、以下のように書くとモデルのテーブル一覧を取得できる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php namespace App\Controller; use App\Controller\AppController; use Cake\Datasource\ConnectionManager; use Cake\ORM\TableRegistry; class SomeController extends AppController { public function someAction() { $tables = ConnectionManager::get('default')->schemaCollection()->listTables(); // ... } } |
以上です。
- – 参考リンク –
- cakephp – Cake 3.x: List all models – Stack Overflow
- php – List all tables in cakePHP 3.x – Stack Overflow
スポンサーリンク
私は Ruby on Rails の前は、PHP & CakePHP を使っていました(今も使いますけど)。PHP についてはオライリーの本を中心に軽く10冊以上は読み込みました。
>> 次の記事 : CakePHPでログイン後に元のページにリダイレクトさせる
<< 前の記事 : SplFileInfo::openFileエラー/CakePHP3
- PHP & CakePHP の関連記事
- PHP+MySQLでNo such file or directoryエラー
- bin/cakeコマンドでintlエラーが出る場合の対処(CakePHP)
- CakePHPアプリケーションをCapistranoでデプロイ
- Integrity constraint violation:Column ‘created’ in order clause is ambiguousエラー/CakePHP
- CakePHPでDB関連テーブルのレコード・データを取得
- CakePHPでカラム属性に別名/エイリアスを付ける仮想フィールド
- CakePHPで日付選択フォームのカスタマイズ
- CakePHP3で現在のコントローラー名・アクション名を取得
- PHPインストールでconfigure: error: freetype.h not foundエラー
- CakePHPでログイン後に元のページにリダイレクトさせる
Leave Your Message!