私の最初の本当のCakePHPプロジェクトを作成しています。私はマニュアルを読んで、ブログチュートリアルを終えましたが、決して専門家ではありません。フォームヘルパーで生成されたフォームを使用してデータベースにデータを追加する際に問題が発生しました。フォームには2つのテキスト入力といくつかの選択ボックスがあり、すべてが正しく入力されています。フォームに記入して送信を押すと、最初の選択ボックスに外部キー制約エラーがあることがわかります。しかし、私は$ this-> request->データをデバッグするとき、それに関連付けられた正しい値を持っています。ここにデバッグがあります。CAKEPHPの外部キー制約 - デバッグで正しい値が表示される
Array
(
[car] => Array
(
[stock] => G123456
[vin] => 12345678
[make_id] => 1
[car_model_id] => 2
[year_id] => 20
[location_id] => 9
[service_status_id] => 1
[type_id] => 6
)
)
私のスキーマは、私はmysqlのコンソールから直接挿入を行なったし、それは完全に働い正しかったことを確認します。ここに私が走った命令があります。
INSERT INTO cars (stock, vin, make_id, car_model_id, year_id, location_id, service_status_id, type_id) VALUES ('G123456', '12345678', '1', '2', '20', '9', '1', '6');
私が呼ぶとき、それは私に、外部キー制約エラーを与えている理由はわからない:
$car = $this->Car->save($this->request->data);
任意のアイデア?
EDIT CakePHPの中のエラーの下クエリは次のとおりです。
INSERT INTO `cars` (`modified`, `created`) VALUES ('2012-02-29 15:53:21', '2012-02-29 15:53:21')
私はmysqlのコンソールからそのクエリを実行すると私は同じエラーを取得します。外部キー制約が失敗し、make_id - 参照が私のコントローラでアドオン()関数である。ここ
をmake.id:
<?php
echo $this->Form->create('Car', array('action' => 'add'));
echo $this->Form->input('car.stock');
echo $this->Form->input('car.vin');
echo $this->Form->input('car.make_id');
echo $this->Form->input('car.car_model_id');
echo $this->Form->input('car.year_id');
echo $this->Form->input('car.location_id');
echo $this->Form->input('car.service_status_id');
echo $this->Form->input('car.type_id');
echo $this->Form->end('Add');
?>
このクエリは、手動で作成したか、または画面に表示されたエラーを受け取りましたか?生成されたSQL構文を確認するために、画面上で生成されたエラーを展開することができます。 –
私は手動でクエリを実行すると正常に動作します。 $ car = $ this-> Car-> save($ this-> request-> data)を発行すると、make_idに外部キー制約エラーが発生します。エラーの真下にあるCakeのエラーに表示されるクエリは次のとおりです。 SQLクエリ:INSERT INTO 'cars'(' modified'、 'created')VALUES( '2012-02-29 15:53:21'、 ' 2012-02-29 15:53:21 ') – Stewie
これは問題です。クエリが間違って生成されていて、他のフィールドがありません。あなたはあなたの質問を更新できますか?どのようにフォームを作成しましたか? –