2014-02-13 6 views
0

Когда я добавляю данные в базу данных. Я получаю ошибку сообщение:Я не могу вставить данные в базу данных (codeigniter)

Field 'order' doesn't have a default value 
INSERT INTO `pages` (`title`, `slug`, `body`, `parent_id`) VALUES ('About', 'Abot', 'About', 5) 

MY_Model:

public function save($data, $id = NULL){ 

// Insert 
    if ($id === NULL) { 
    !isset($data[$this->_primary_key]) || $data[$this->_primary_key] = NULL; 
    $this->db->set($data); 
    $this->db->insert($this->_table_name); 

    $id = $this->db->insert_id(); 
} 
// Update 
else { 
    $filter = $this->_primary_filter; 
    $id = $filter($id); 
    $this->db->set($data); 
    $this->db->where($this->_primary_key, $id); 
    $this->db->update($this->_table_name); 
} 

return $id; 
} 

Контроллер:

public function edit($id = NULL) { 

    // Fetch a page or set a new one 
    if($id) { 
     $this->data['page'] = $this->page_m->get($id); 
     count($this->data['page']) || $this->data['errors'][] = 'page could not be found'; 
    } else { 
     $this->data['page'] = $this->page_m->get_new(); 
    } 

    // Pages for dropdown 
    $this->data['pages_no_parents'] = $this->page_m->get_no_parents(); 
    //dump($this->data['pages_no_parents']); 

    // Set up the form 
    $rules = $this->page_m->rules; 
    $this->form_validation->set_rules($rules); 

    // Process the form 
    if($this->form_validation->run() == TRUE) { 
     //We can login and redirect 
     $data = $this->page_m->array_from_post(array('title', 'slug', 'body', 'parent_id')); 
     $this->page_m->save($data, $id); 
     redirect('admin/page'); 
    } 
    // Load the view 
    $this->data['subview'] = 'admin/page/edit'; 
    $this->load->view('admin/_layout_main', $this->data); 
} 

базы данных:

id | title | slug | order | body | parent_id 
1 | Homepage |/ | 1 | abc | 0 
2 | About | contact | 0 | abc | 0 

при запуске запроса в PHPMyAdmin:

INSERT INTO `pages` (`title`, `slug`, `body`, `parent_id`) VALUES ('About', 'Abot', 'About', 5) 

все в порядке.

+1

дают значение по умолчанию в 'колонке order' .. –

+0

Но когда Я запускаю запрос в phpmyadmin (не заказывайте столбец), он все еще работает. – TriMinh

ответ

0

Вам нужно либо ввести некоторое значение для того,

INSERT INTO `pages` (`title`, `slug`, `order`, `body`, `parent_id`) VALUES ('About', 'Abot', NULL, 'About', 5) 

или изменить таблицу, чтобы иметь значение по умолчанию

ALTER TABLE `pages` CHANGE `status` `status` VARCHAR(255) NOT NULL DEFAULT 'whatever default you want'; 
+0

Но когда я запускаю запрос в phpmyadmin (не заказывайте столбец): INSERT INTO 'pages' (' title', 'slug',' body', 'parent_id') VALUES ('About', 'Abot', 'About' , 5) это вставка успеха! и столбец порядка 0. Я следил за курсом cms в codeigniter на tutlus. – TriMinh

+0

Что такое синтаксис CREATE TABLE для этой таблицы? –

+0

Я использовал миграцию, чтобы создать ее. \t публичной функции вверх() { \t \t $ этом-> dbforge-> add_field (массив ( \t 'ID' => массив ( \t \t 'типа' => 'INT', \t \t 'ограничение' => 11, \t \t 'без знака' => TRUE, то \t \t 'auto_increment' => TRUE, \t \t), \t 'заголовок' => массив ( \t \t 'типа' => 'УАКСНАК', \t \t 'ограничения' => '100', \t \t), \t 'пробкового' => массив ( \t \t 'типа' => 'УАКСНАК', \t \t ограничения '=> '100', \t \t), 'заказать'=> массив ( \t \t 'типа'=> 'INT', \t \t 'ограничение'=> '11' ), ' body '=> array ( \t 'type' => 'TEXT', ), \t)); – TriMinh

Смежные вопросы