Cannot add or update a child row: a foreign key constraint fails (`web-site`.`events`, CONSTRAINT `fk_events_2` FOREIGN KEY (`starting_day`) REFERENCES `days` (`day`) ON DELETE NO ACTION ON UPDATE NO ACTION) [ INSERT INTO `events` (`name`, `starting_time`, `ending_time`, `place`, `person_in_charge`, `seats`, `owner`, `starting_day`, `ending_day`, `opened_until`) VALUES ('Трям', '11:00:00', '14:00:00', 'Неивестно', 'А. Н. Оним 12-34-56', '2', '4', '', '', '') ]
if (!($starting_day->find())) $starting_day -> create(); //чтобы $starting_day имел реальный ID
$event->starting_day = $starting_day;
$event->starting_day = $starting_day->day
, то starting_day вообще не попадает в запрос INSERT (это поле попросту пропускается), что тоже противоречит FOREIGN_KEY. protected $belongs_to = array (
'creator' => array('model' => 'user','foreign_key' => 'owner'),
'start' => array( 'model' => 'day', 'foreign_key' => 'starting_day'),
'end' => array( 'model' => 'day', 'foreign_key' => 'ending_day'),
'closing' => array('model' => 'day', 'foreign_key' => 'opened_until'),
);
'creator' => array('model' => 'event','foreign_key' => 'owner'),
$event->add('creator', ORM::factory('user',Auth::instance()->get_user()->id));
выдаёт Undefined index для creator. protected $_has_many = array(
'starting_day' => array(
'model' => 'day',
'foreign_key' => 'starting_day'),
'ending_day' => array(
'model' => 'day',
'foreign_key' => 'ending_day'),
'opened_until' => array(
'model' => 'day',
'foreign_key' => 'opened_until')
);
protected $_belongs_to = array(
'starting_day' => array('model' => 'event', 'far_key' => 'starting_day'),
'ending_day' => array('model' => 'event', 'far_key' => 'ending_day'),
'opened_until' => array('model' => 'event', 'far_key' => 'opened_until'),
);
Вот что получилось, если интересно:
$starting_day = new Model_Day(Request::current()->post('starting_day'));
if ($starting_day->day == '0000-00-00') $starting_day -> create(); else $starting_day -> update();
$ending_day = new Model_Day(Request::current()->post('ending_day'));
if ($ending_day->day == '0000-00-00') $ending_day -> create(); else $ending_day -> update();
$opened_until = new Model_Day(Request::current()->post('opened_until'));
if (Request::current()->post('opened_until') == '') $opened_until = new Model_Day(date("Y-m-d", strtotime(Request::current()->post('starting_day'))-10080));
$opened_until -> save();
$event->starting_day = $starting_day;
$event->ending_day = $ending_day;
$event->opened_until = $opened_until;
$event->create();
Что интересно: если для $opened_until тоже ввести проверку на существование, то он выдаёт либо cannot update: model not loaded, либо DUPLICATE PRIMARY KEY (т.е. 0000-00-00, такой ключ остался от предыдущих прогонов). Пока save() работает, попробую так.
Спасибо!