CakePHP2のsaveができない

このQ&Aのポイント
  • CakePHP2で特定のコントローラーでsaveができない問題について紹介します。
  • 解決方法をGoogleで検索して試しましたが、うまくいきませんでした。
  • 原因としては、キャッシュの問題や命名規則に沿っていないことが考えられます。
回答を見る
  • ベストアンサー

CakePHP2 のsaveができない

CakePHP2.何かを使っています。 ローカル環境でxampp、windows7で開発しています。 なぜかある特定のコントローラーでsaveができず、 Googleで見つけた様々な解決方法を全て試してもダメでした。 コントローラー:PaypalsController.php モデル:Paypal.php テーブル名:paypals コントローラー内で $this->Paypal->save($data); すると The eventKey variable is required An Internal Error Has Occurred のようなエラーが出ます。 キャッシュの問題であるデバッグモードも2になっています。 また、命名規則に沿っているのですが、 モデル内に、 public $useTable = 'paypals'; を書かないと、 Missing Database Table のエラーも出ます。 この時点で何かおかしい気がします。 どのような原因が考えられるか分かる方いたらアドバイス下さい。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • foreach
  • ベストアンサー率51% (43/84)
回答No.1

他にPaypalという名前がプレフィックスになったクラスを使ってませんか? たとえばPaypalComponentなど。$this->Paypalをダンプするなど、中身を確認したほうが良いかと。 また、名前から察するに決済結果を保存するモデルだと思いますが、他に決済系のプラグイン等を使われていませんか? Cake2ではプラグイン内にも同名のクラスがあれば衝突するので、Paypalという文字でプロジェクト内を検索すると良いかもしれません。

london14
質問者

お礼

原因が特定出来ました! constractの問題だったようです。

関連するQ&A

  • CAKEPHPのエラーについて

    XAMPPを使い、CAKEPHPの勉強をしております。 画面にアクセスからDBにアクセスすると、以下のエラーが表示されます。 Warning (512): SQL Error: 11: database disk image is malformed [CORE\cake\libs\model\datasources\dbo_source.php, line 666] 解決方法が分からないため、ご相談している次第です。 ご存知の方、いらっしゃいましたら、教えて頂けますでしょうか?

    • ベストアンサー
    • PHP
  • CakePHP導入時のデータベース設定

    こんにちは。 CakePHP2.4.10をダウンロード後の、「database.php」の設定についてお聞きしたいです。 当方Mac OSX、MAMPを使用しています。データベース管理はphpMyAdminで行っています。 phpMyAdminのユーザを以下のように設定しました。 ユーザ:cakephp ホスト:localhost パスワード:はい(任意のものに設定済み) グローバル特権:USAGE 権限移譲:いいえ MAMPのhtdocsフォルダ内にcakesのフォルダを移動後、 http://localhost:8888/cakephp/ を見て、エラーを確認すると、 CakePHP is NOT able to connect to the database. Database connection "Mysql" is missing, or could not be created. というエラーが出ています。 こちらのサイト(http://eight-smile.com/blog/web/cakephp%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82/)では、database.php.defaultの拡張子をdatabase.phpに変更後、 ・login ・password ・database のみを書き換えればよいとのことだったので、 ・'login' => 'cakephp' ・'password' => '任意のパスワード' ・'database' => 'mini_bbs'(phpMyAdminでテーブル作成済) としました。 それでもエラーは消えないです。どうすればよいのでしょうか?お教え下さい。

    • ベストアンサー
    • PHP
  • CAKEPHP current_timestamp

    会社でCAKEPHPを導入する事になり、 今迄のべた書きソースを載せ変える事になりました。 CAKEPHPはまだ触った事がなかったので、 色々手間取っています。 そこで、current_timestampについて質問です。 テーブル:Sample 項目 Aid Btime 上記テーブルに insert into sample(1,current_timestamp)としていたソースがあり、 CakePHPにてコントローラからモデルにパラメータを渡してsave()したところ 怒られました。 色々調べましたが、current_timestampは使えなず、modifiedを付けると・・・ と言うような内容を見つけました。 Cakeがどういう動きをしているかも分かっていない状況で申し訳ありませんが、 どう対応すればいいのか教えて頂けると幸いです。 以上、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • CakePHPのデータベース接続エラーについて

    MySQLもCakePHPも初心者です。 詳しい方よろしくお願い申し上げます。 当方のPC環境はMac OS X 10.9.5で、MAMPをインストールして 色々なサイトを見ながらなんとか初期設定までは完了しました。 その後、下記の様なエラーが表示されて、色々グーグル検索し、 CakePHP is NOT able to connect to the database. Database connection "Mysql" is missing, or could not be created. database.phpのファイルも書き換えて、iTermからMysqlに接続して ユーザーも作成出来ましたが、依然としてエラーは解消されないので PHPの設定もphp.iniで追記してみましたが、エラーが解消されず もうどうして良いかわかりません。 (参考にしたページ:http://www.phpbook.jp/cakephp/install/index2.html  http://locombox.com/posts/35  他) どうぞよろしくお願いします。

    • ベストアンサー
    • MySQL
  • cakephpのバリデーションについて。

    cakephpのバリデーションについて。 windowsxp環境にxamppをインストール php:5.3.1 cakephp:1.2.6 mysql:5.1.41 書籍を読みながらcakephpを始めました。 現在 フォームで入力された項目に該当する データをmysqlのデータベースで検索後、 結果をビューに表示するものを作っています。 フォームヘルパーを使用し、inputされたデータを コントローラ側で受け、その値をモデルで検索後 ビューへ渡しています。 このようなデータベースに保存は行わない検索だけの場合 フォームに入力されたデータをcakePHPのバリデーション機能 を利用してチェックできるのでしょうか? ビューでは $form->input('form.text1'array('label'=>'検索対象1')); $form->input('form.text2'array('label'=>'検索対象2')); としています。 このform.text1とform.text2について未入力の場合など エラーチェックが行いたいです。 そもそもこのような場合のエラーチェックは コントローラーに処理を記述しバリデーションは利用しないのかなど、 どなたかアドバイスいただけると助かります。

    • ベストアンサー
    • PHP
  • さくらVPS+CakePHPがうまく動きません

    さくらのVPSにCakePHPを導入して試しています。 VPSの設定が一通り完了し、現行のサイト(さくらのレンタルサーバーに設置)を移行してみたところ、どうしてもうまくいきません。 html+phpのページは何の問題もなく表示されるため、データベース(Mysql)が原因なのは明らかなのですが、スキル不足の問題もあり問題が見つけられず困っています。 具体的には、Mysqlにアクセスするページを表示しようとすると、このようなエラーがCakePHPのログに残ります。 ------ Error: Fatal Error (1): Allowed memory size of 134217728 bytes exhausted (tried to allocate 17218517 bytes) in [/var/cake/lib/Cake/Utility/String.php, line 247] 2013-07-13 09:43:45 Error: [FatalErrorException] Allowed memory size of 134217728 bytes exhausted (tried to allocate 17218517 bytes) #0 /var/cake/lib/Cake/Error/ErrorHandler.php(161): ErrorHandler::handleFatalError(1, 'Allowed memory ...', '/var/cake/lib/C...', 247) #1 [internal function]: ErrorHandler::handleError(1, 'Allowed memory ...', '/var/cake/lib/C...', 247, Array) #2 /var/cake/lib/Cake/Core/App.php(926): call_user_func('ErrorHandler::h...', 1, 'Allowed memory ...', '/var/cake/lib/C...', 247, Array) #3 /var/cake/lib/Cake/Core/App.php(899): App::_checkFatalError() #4 [internal function]: App::shutdown() #5 {main} ------ メモリーサイズを上げると、今度はタイムアウトでエラーになります。 CakePHPの「database.php」には、 public $default = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'hoge', 'password' => 'pass', 'database' => 'hoge', 'prefix' => '', 'encoding' => 'utf8', ); と設定していて、Mysqlにはユーザー「hoge」とテーブル「hoge」を用意しています。 たとえば、上の設定で「database」を存在しないテーブル「aaa」にすると、 Missing Database Connection Error: A Database connection using "Mysql" was missing or unable to connect. The database server returned this error: SQLSTATE[28000] [1045] Access denied for user 'aaa'@'localhost' (using password: YES) このように普通のエラーが表示されます。 また、「login」を存在しないユーザー名「bbb」にすると、 Missing Database Connection Error: A Database connection using "Mysql" was missing or unable to connect. The database server returned this error: SQLSTATE[42000] [1049] Unknown database 'bbb' こちらも普通のエラーが表示されます。 CakePHPのappディレクトリはvar直下に移動していますが、html直下に置いても結果は同じでした。 どういったことが原因なのか、解決方法や手がかりなどご教示いただければと思います。 ------------- さくらのVPS SSD 2G CentOS 6 x86_64 PHPのバージョン PHP 5.3.3 (cli) (built: Feb 22 2013 02:51:11) Mysqlのバージョン Ver 14.14 Distrib 5.1.69, for redhat-linux-gnu (x86_64) using readline 5.1 PDO PDO support => enabled PDO drivers => mysql, sqlite PDO Driver for MySQL, client library version => 5.1.69 PDO Driver for SQLite 3.x => enabled -------------

  • CakePHPでスキーマファイルが読み込めない

    お世話になります。 現在WindowsのXAMPP上でCakePHPを使ってアプリケーションの開発を行っております。 スキーマファイルを作成し、cakeコマンドからテーブルの作成をしようとしているのですが、 cakeコマンドを実行すると以下の様なエラーが表示されます。 C:\xampp\htdocs\firstcake\app\Console>cake schema create Welcome to CakePHP v2.3.10 Console --------------------------------------------------------------- App : Console Path: C:\xampp\htdocs\firstcake\app\Console\ --------------------------------------------------------------- Cake Schema Shell --------------------------------------------------------------- The chosen schema could not be loaded. Attempted to load: File: C:\xampp\htdocs\firstcake\app\Console\Config\Schema\schema.php Name: 通常schema.phpファイルは~app\Config\Schemaフォルダに配置するのですが上述のエラーが表示され読み込まれなかったため、~app\Console\Config\Schemaフォルダを作成し配置しました。 それでも上記のエラーメッセージが表示されます。 そこでCakePHPにおいてスキーマファイルが読み込めなかった際の対処法についてご教示頂きたく投稿しました。 長文となりましたが、ご協力宜しくお願い致します。 ★環境 OS : Windows 7 Home Premium (システムドライブ:C) XAMPP : ver1.8.3(インストールせず、C:\xamppフォルダへコピペで配置)。 CakePHP: ver2.3.10 ★フォルダ構造 ・XAMPPのインストールフォルダ: C:\xampp ・アプリケーションルート: C:\xampp\htdocs\firstcake(CakePHPを配置) ・schema.phpのデフォルトの配置場所: C:\xampp\htdocs\firstcake\app\Config\Schema\schema.php ・schema.phpを別途配置した場所: C:\xampp\htdocs\firstcake\app\Console\Config\Schema\schema.php ・環境変数 PATH = C:\xampp\htdocs\firstcake\app\、C:\xampp\php

    • ベストアンサー
    • PHP
  • cakephpの命名規則について

    cakephp初心者です。 cakephpはテーブル名、モデル名、コントローラ名、ビュー名、が規則によって付けられますが、 複数人で開発する場合、 同じテーブルを参照しようとすると、同じ名前のビューフォルダなどが出来てしまうのではないですか? テーブル名:users モデル名:User コントローラ名:UsersController ビューフォルダ:Users   ビューファイル:index.ctp usersテーブルを参照する場合、みんな同じコントローラ名、そして、ビューフォルダ名になると思うのですが、 どうやって別々のページを作っていくのですか? 上手く質問出来ていませんし、勉強不足だとは承知しています。 どうしてもCakePHPに苦戦しています。 開発の進め方を出来るだけ分かりやすく説明して頂けると嬉しいです。

    • ベストアンサー
    • PHP
  • cakephpのビューの使い方

    cakephpのビューの使い方 windowsxp環境にxamppをインストール php:5.3.1 cakephp:1.2.6 書籍を読みながらcakephpを始めました。 フォームを利用するサンプルを試しています。 コントローラーで変数に値をセットし ビューでの変数の表示方法の記述がよくわかりません。 コントローラで $this->set("result",$result); とし ビューctpで <html> <body> <h1>送信結果</h1> <p><?=$result ?></p> </body> </html> と記述されているのですが、ブラウザには変数が表示されません。 <?php echo $result ?>と書けば表示されるのですが <?=$result ?>という書き方ですとなにも表示されません。 どなたかアドバイスをいただけると助かります。 作成日: 2010年4月2日(金) 21時05分

    • ベストアンサー
    • PHP
  • CakePHP で、質問させていただきます。CakePHPは、初心者で

    CakePHP で、質問させていただきます。CakePHPは、初心者です。 app/controllers のコントローラ「mobilehellow_controller.php」で、以下のようにデータをセットして、DBにインサートしようとしていますが、何もDBには追加されません。 $saveData = array( "NUM" => $item[$hscan_offset]['kyujin_syokusyu'], "JOBTYPE" => 'kyujin_syokusyu', )); $this->Mobilehellow->create(); $this->Mobilehellow->save($saveData); 画面上には、こんな文字が表示されました。 Query: INSERT INTO "mobilehellows" ("NUM") VALUES ('nextval(''"helloworkmobilep01_NUM_seq"''') DBの構成はこれです。 NUM integer NOT NULL JOBTYPE text エラーも何も出なので、どうしてなのかわかりません。 どうか、ご存知の方お教えください。

    • ベストアンサー
    • PHP

専門家に質問してみよう