前提・実現したいこと
CakePHPのチュートリアルで学習中です・
http://easyramble.com/cakephp-develop-tutorial.html#toc_5
scaffoldをSitemasterという名前で作成してみたのですが、URLへアクセスすると、
http://localhost:8765/Sitemasters/でアクセスすると、以下のエラーがでます。
チュートリアル中の「Users」についてはアクセスできているのでsitesと一回も入れてないのに出てこられたことに困惑しています。
cake phpのこう言ったときに対応できるノウハウが無くお知恵をお返しいただけないでしょうか。、
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'dbname.sites' doesn't exist
scaffold作成時のコマンド
# bin/cake bake migration CreateSitemaster site_id:integer site_name:string url:string create modified
# bin/cake migrations migrate
# bin/cake bake all Sitemaster
試したこと
dbname.Sitemastersが存在することの確認⇒存在した
bake allによってsrc/Model/Table/SitemastersTable.phpが作成されていることの確認⇒存在した
補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
PHP 7.0.6
CakePHP '3.2.10'
errror.log をみましたが、SitemastersTableもModelに加えてsitesテーブルが必要?ということでしょうか・
2016-05-28 02:52:50 Error: [Cake\Database\Exception] SQLSTATE[42S02]: Base table or view not found: 1146 Table 'myapp.sites' doesn't exist
Request URL: /Sitemasters/
Client IP: 192.168.200.68
Stack Trace:
#0 /var/www/html/myapp/vendor/cakephp/cakephp/src/Database/Schema/Collection.php(96): Cake\Database\Schema\Collection->_reflect('Column', 'sites', Array, Object(Cake\Database\Schema\Table))
#1 /var/www/html/myapp/vendor/cakephp/cakephp/src/Database/Schema/CachedCollection.php(64): Cake\Database\Schema\Collection->describe('sites', Array)
#2 /var/www/html/myapp/vendor/cakephp/cakephp/src/ORM/Table.php(430): Cake\Database\Schema\CachedCollection->describe('sites')
#3 /var/www/html/myapp/vendor/cakephp/cakephp/src/ORM/Table.php(506): Cake\ORM\Table->schema()
#4 /var/www/html/myapp/vendor/cakephp/cakephp/src/ORM/Query.php(371): Cake\ORM\Table->primaryKey()
#5 /var/www/html/myapp/vendor/cakephp/cakephp/src/ORM/Query.php(349): Cake\ORM\Query->_addAssociationsToTypeMap(Object(App\Model\Table\SitemastersTable), Object(Cake\Database\TypeMap), Array)
#6 /var/www/html/myapp/vendor/cakephp/cakephp/src/ORM/Query.php(673): Cake\ORM\Query->contain(Array)
#7 /var/www/html/myapp/vendor/cakephp/cakephp/src/ORM/Table.php(1806): Cake\ORM\Query->applyOptions(Array)
#8 /var/www/html/myapp/vendor/cakephp/cakephp/src/ORM/Table.php(948): Cake\ORM\Table->callFinder('all', Object(Cake\ORM\Query), Array)
#9 /var/www/html/myapp/vendor/cakephp/cakephp/src/Controller/Component/PaginatorComponent.php(166): Cake\ORM\Table->find('all', Array)
#10 /var/www/html/myapp/vendor/cakephp/cakephp/src/Controller/Controller.php(688): Cake\Controller\Component\PaginatorComponent->paginate(Object(App\Model\Table\SitemastersTable), Array)
#11 /var/www/html/myapp/src/Controller/SitemastersController.php(24): Cake\Controller\Controller->paginate(Object(App\Model\Table\SitemastersTable))
#12 [internal function]: App\Controller\SitemastersController->index()
#13 /var/www/html/myapp/vendor/cakephp/cakephp/src/Controller/Controller.php(429): call_user_func_array(Array, Array)
#14 /var/www/html/myapp/vendor/cakephp/cakephp/src/Routing/Dispatcher.php(114): Cake\Controller\Controller->invokeAction()
#15 /var/www/html/myapp/vendor/cakephp/cakephp/src/Routing/Dispatcher.php(87): Cake\Routing\Dispatcher->_invoke(Object(App\Controller\SitemastersController))
#16 /var/www/html/myapp/webroot/index.php(36): Cake\Routing\Dispatcher->dispatch(Object(Cake\Network\Request), Object(Cake\Network\Response))
#17 {main}
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+3
CakePHP と bake の仕様うろ覚えで怪しい点上げてみます。
- どこかに
site_id
というカラムがある?→sites.id
を探しに行くかもしれません。 sites_XXXs
XXXs_sites
のような「複数形_複数形」のテーブルがある?→XXXs
sites
という2テーブルの中間テーブルと解釈されるかもしれません。
スタックトレースにある SitemastersController.php(24) がどうなっているかも確認してみてください。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.22%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2016/05/28 12:22 編集
bake migration したときに要素の一つとしてsite_idをいれましたが、
cake phpの親切昨日というか、migrationの仕様で_があると、別のテーブルを見つけに行こうとしていました。
命名規則が未だ自分に馴染んでいなかったようでそこがハマリポイントでした。