2014-11-29 2 views
0

ОК я пытаюсь понять, как использовать insert_batchCodeIgniter insert_batch()

Я Тринга что-то вроде этого

function checkboxes($data,$category) 
    { 

     $insert=array(
         'story'=>$data 
         'category'=>$category 
        ); 

     $this->db->insert_batch('stories_to_categories',$insert); 
    } 

За $ данных у меня есть массив, который может иметь диапазон значений и ключей

(
    [0] => 1 
    [1] => 6 
    [2] => 14 
    [3] => 15 
    [4] => 18 
) 

для категории я буду иметь только одно значение, например 2

стараюсь для того чтобы достигнуть в мой табеле

story category 
------------------------ 
    1  2 
    6  2 
    14  2 
    15  2 
    18  2 

Может ли кто-нибудь помочь мне в такой боли!

+0

[ 'insert' для вставки одной записи и' insert_batch' для вставки нескольких записей] (HTTPS://ellislab.com/codeigniter/user-guide/database/active_record.html#insert). Так в чем проблема, которую вы испытываете? – Sparky

ответ

0

Вы можете добиться этого, сделав небольшую модификацию кода. Документация CI показывает, что пакетная вставка ожидает массив, который встроен в ассоциативные массивы: 1 ассоциативный массив для каждой новой строки, которая должна быть вставлена, сопоставление столбца со значением.

Практически, вы хотели бы создать массив, как это для $insert:

$insert=array(
    array('story'=>1, 'category'=>2). 
    array('story'=>6, 'category'=>2). 
    array('story'=>14, 'category'=>2). 
    array('story'=>15, 'category'=>2). 
    array('story'=>18, 'category'=>2). 
); 

Поскольку ваша категория постоянна, вы можете использовать функцию:

function _insert_($data, $category='2', $options=array('data'=>'story', 'category'=>'category')) 
{ 
    $return = array(); 
    foreach ($data as $value) 
    { 
     $return[] = array($options['data']=>$value, $options['category']=>$category); 
    } 
    return $return; 
} 

Вы можете затем имеют примерно следующее:

$this->db->insert_batch('stories_to_categories',_insert_($data)); 

Надеюсь, что это поможет.

Поиск Ссылка (ы) ниже:

См CodeIgniter ссылки здесь: CodeIgniter Active Record: #Insert

+0

хороших один см моих решения – user3827056

+0

функции флажки ($ category_checkboxes, $ last_story_id) { \t Еогеаспа ($ category_checkboxes как $ коробка) \t { $ вставить [] = массив ( \t \t \t \t "категория" => $ коробка, \t \t \t \t "история" => $ last_story_id \t \t \t \t); } $ this-> db-> insert_batch ('stories_to_categories', $ insert); } – user3827056

+0

Прямо к точке. Хороший, @ user3827056 – linil

0
function checkboxes($category_checkboxes,$last_story_id) 
    { 
     foreach ($category_checkboxes as $box) 
     { 
      $insert[] = array(
           "category" => $box, 
           "story" => $last_story_id 
          ); 

     } 

     $this->db->insert_batch('stories_to_categories',$insert); 
    } 
Смежные вопросы