1. TOPTOP
  2. Webサービス
  3. CakePHP

CakePHPのError:An Internal Error Has Occurredはデータベースのテーブル周りを確認しましょう

|

先日、Error:An Internal Error Has Occurredってどういうこと? WebデザイナーのためのCakePHPビューコーディング入門より(新しいタブで開く)という記事を書いて、泣きを入れていました。

しかし、何人かの人に聞きまわったり、時間を空けてググったりして、ようやく解決したのでそのご報告です。このエラーを解決するためには、手順1~2に従って修正する必要があります。

Internal Error1

問題解決への手順その1

そもそも”Error:An Internal Error Has Occurred”というエラーの原因の1つとして、モデルで使うテーブルが指定されていないことにあります。

従って、お問い合わせ管理の画面で表示するテーブル内容を、使用しているデータベースの下に入れてやります。この本を写経している人であれば、以下のテーブルを入れてあげましょう。

  • contactsテーブル
  • mtr_sexesテーブル
  • mtr_agesテーブル
  • mtr_favolitesテーブル
  • contacts_mtr_favolitesテーブル

sample_tables2

問題解決への手順その2

次にContactsController.phpのソースコードを修正します。上記の本のコードでは、

/**
* 問い合わせリスト
*/
public function index() {

   $contactData = $this->paginate('Paginate');

   $this->set(compact('contactData'));
}

となっていますが、このコードを次のように変えてください。

public function index() {

   $contactData = $this->paginate('Contact');

   $this->set(compact('contactData'));
}

paginate()の引数を、‘Paginate’から’Contact’に変えています。これでようやくお問い合わせ管理画面を呼び出すことができました!

sample2_query

まとめ

いや~、たかがページを1つ飛ばすだけで、3日もかかってしまいましたよ~(汗この記事を読んでくださった方は、くれぐれもドツボにはまらないよう気を付けてください。

最後になりましたが、アドバイスをくださった関係者のみなさま、どうもありがとうございました!

〔元の記事〕

〔参考サイト〕