Я создаю свой первый настоящий проект CakePHP.Я прочитал руководство и прошел учебник по блогу, но ни в коем случае не эксперт.У меня проблема с добавлением данных в базу данных через форму, созданную с помощью помощника по форме.Форма имеет два текстовых ввода и несколько полей выбора, все из которых заполняются правильно.Когда я заполняю форму и нажимаю «Отправить», она говорит мне, что у меня есть ошибка ограничения внешнего ключа в первом окне выбора.Однако, когда я отлаживаю $ this-> request-> data, он имеет правильные значения, связанные с ним.Вот отладка.
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);
Есть идеи?
РЕДАКТИРОВАТЬ Запрос по ошибке в CakePHP:
INSERT INTO `cars` (`modified`, `created`) VALUES ('2012-02-29 15:53:21', '2012-02-29 15:53:21')
Когда я запускаю этот запрос из консоли MySQL, я получаю ту же ошибку.Сбой ограничения внешнего ключа, make_id - ссылка make.id
Вот функция add () в моем контроллере:
public function add()
{
$this->set('years', $this->Car->Year->find('list'));
$this->set('makes', $this->Car->Make->find('list'));
$this->set('carModels', $this->Car->CarModel->find('list'));
$this->set('locations', $this->Car->Location->find('list'));
$this->set('types', $this->Car->Type->find('list'));
$this->set('serviceStatuses', $this->Car->ServiceStatus->find('list'));
if(!empty($this->request->data))
{
$car = $this->Car->save($this->request->data);
//debug($this->request->data, true);
}
}
А вот файл представления:
<?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');
?>