Grocery Crud — ошибка CodeIgniter ratio_n_n

У меня возникла проблема при попытке сохранить данные (или обновить) в формате crud с отношением n_n, у меня есть таблица продукта, связанная с product_detail, деталь продукта имеет 3 внешних ключа, для подключения к таблице с именем color и др. называется материалом. Любая идея, почему не удается? Я ценю вашу помощь, спасибо.

Ошибка заключается в следующем:

Ошибка базы данных Произошла

Номер ошибки: 1452

Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется (medina_db,product_detail, ОГРАНИЧЕНИЕ product_detail_ibfk_3 ИНОСТРАННЫЙ КЛЮЧ (material_id) РЕКОМЕНДАЦИИ material (id))

ВСТАВИТЬ В product_detail (product_id, color_id) ЗНАЧЕНИЯ («4», «1»)

Имя файла: /Applications/MAMP/htdocs/industrias_medina/models/grocery_crud_model.php

Номер строки: 413


Код моего бакалейного магазина:

$crud = new grocery_CRUD();
$crud->set_table('product')->set_subject('Productos');
$crud->set_relation_n_n("Colores", 'product_detail', 'color', 'product_id', 'color_id', 'name');
$crud->set_relation_n_n("Materiales", 'product_detail', 'material', 'product_id', 'material_id', 'name');
$crud->set_field_upload('image','assets/uploads/files');
$crud->fields('name','model','description', "Colores", "Materiales", 'image');
$output = $crud->render();
$this->_productos_output($output);

SQL:

CREATE TABLE `color` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(250) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=ucs2 AUTO_INCREMENT=2 ;

CREATE TABLE `material` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(250) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

CREATE TABLE `product` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Unique identifier',
`name` varchar(250) NOT NULL COMMENT 'Product''s name',
`model` varchar(250) NOT NULL COMMENT 'Product''s model',
`description` varchar(400) NOT NULL COMMENT 'Product''s description',
`image` varchar(400) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='Table to store products' AUTO_INCREMENT=13 ;

CREATE TABLE `product_detail` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`product_id` int(11) NOT NULL,
`color_id` int(11) NOT NULL,
`material_id` int(11) NOT NULL,
PRIMARY KEY (`id`,`product_id`,`color_id`,`material_id`),
KEY `product_id` (`product_id`),
KEY `color_id` (`color_id`),
KEY `material_id` (`material_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=14 ;

0

Решение

Похоже, в вашей таблице product_detail есть столбец material_id, который ссылается на таблицу материалов. Ваш оператор вставки ничего не вставляет в этот столбец material_id. Вам нужно либо вставить значение в этот столбец (который существует в материале), установить значение по умолчанию, которое ссылается на ключ в материале, либо установить значение по умолчанию NULL для этого столбца.

Спасибо,

Эндрю

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]