Как отправить insert_batch более чем в одну таблицу в CodeIgniter - PullRequest
0 голосов
/ 12 сентября 2018

Итак, я создал систему тегов, подобную той, которую использует WordPress.

В настоящее время я пытаюсь изменить свой фактический код в методе редактирования для сообщений.

Допустим, у меня есть дватаблицы:

  • условия
    • term_id (AI)
    • title
    • slug
  • отношение
    • id
    • term_id
    • status
    • type

Фактическое поведение заключается в том, что я выбираютермины из таблицы терминов, но они выбираются только в том случае, если они существуют.

Я хотел бы редактировать систему точно так же, как в WordPress .... возможность добавлять новые термины (если они не существуют)непосредственно из ввода.

Это то, что у меня есть в моем методе редактирования Контроллера:

// Get attached categories
$categories = array();
$categories[0] = 'Select Categories';

$categories_attached = $this->Post_model->the_categories($id);

if (is_array($categories_attached) || is_object($categories_attached))
{
    foreach ($categories_attached as $cat)
    {
        $categories[$cat->term_id] = $cat->term_id;
    }
}

$data['categories'] = $categories;

// Select Categories    
$categories_options = array();
$categories_options[0] = 'Select Categories';

$categories_list = $this->Terms_model->get_list();

foreach($categories_list as $cat){
    $categories_options[$cat->term_id] = $cat->title;
}

$data['categories_options'] = $categories_options;

Как вы могли видеть, один из способов заключается в извлечении прикрепленных категорий для определенного поста иВо-вторых, нужно выбрать категории из таблицы терминов в случае их использования.

У меня также есть это:

// Add/Remove term relationship
$this->Post_model->updateCats($id, $this->input->post('cat_id[]'));

wон заходит в мою модель Post и убивает вложенные категории, если я отменяю выбор любой из них:

это для редактирования сообщений:

// Add/Remove categories
public function updateCats($id, array $arrSkills)
{
    //in case if the array is empty you can stop the process here
    if (empty($arrSkills)) {
        return false;
    }

    //kill all associated items
    $this->db->where('post_id', $id);
    $this->db->where('type', 'category');
    $this->db->delete('ci_relationship');

    //insert all items
    $arrInsertData = [];


    foreach($arrSkills as $strSkill)
    {
        $arrInsertData[] = [
            'post_id' => $id,
            'term_id' => $strSkill,
            'status'  => 'attached',
            'type' => 'category'
        ];
    }

    $this->db->insert_batch('ci_relationship', $arrInsertData);

    return true;
}

Есть идеи, как реализовать мою идею?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...