我正在使用Codeigniters Active記錄庫對我的數據庫上的列執行更新。Codeigniter Activerecord更新方法拒絕插入NULL值
下面是表
CREATE TABLE `schedules` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`reservation_id` INT(11) NULL DEFAULT NULL,
`title` VARCHAR(255) NOT NULL,
`description` VARCHAR(512) NULL DEFAULT NULL,
`start_date` DATE NOT NULL,
`start_time` TIME NOT NULL,
`end_time` TIME NULL DEFAULT NULL,
`enabled` TINYINT(1) NULL DEFAULT '1',
`status` ENUM('OPEN','RESERVED') NULL DEFAULT 'OPEN',
PRIMARY KEY (`id`),
INDEX `fk_schedules_reservations` (`reservation_id`),
CONSTRAINT `fk_schedules_reservations` FOREIGN KEY (`reservation_id`) REFERENCES `reservations` (`id`) ON UPDATE NO ACTION ON DELETE NO ACTION
)
的SQL我已經聲明reservation_id可爲空(reservation_id INT(11) NULL DEFAULT NULL
)
的問題是,CI似乎並不想送創建語句時爲NULL值。
$data['status'] = $this->Schedule->get_status_open();
$data['reservation_id'] = null;
$this->Schedule->update($s_id, $data);
的代碼位剛剛生成以下錯誤消息
Error Number: 1452
Cannot add or update a child row: a foreign key constraint fails (`ethyme/schedules`, CONSTRAINT `fk_schedules_reservations` FOREIGN KEY (`reservation_id`) REFERENCES `reservations` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)
UPDATE `schedules` SET `status` = 'OPEN', `reservation_id` = '' WHERE `id` = '4'
據我所知,所有你需要做的就是將值設置爲NULL和AR應該拿起它是一個NULL值,但這似乎並非如此。只是不斷髮送空值。
我是新來的CI,我必須做其他事情才能使它工作嗎?有任何想法嗎?
這原來是一個非問題。我使用的基本模型是使用xss_clean來過濾數據,並且它正在篡改如NULL,TRUE,FALSE等數據類型。添加一個排除列表解決了這個問題。以上是發送NULL數據的正確方法 – JohnP 2010-08-19 08:18:01