Как создать один массив, используя два цикла итерации, а затем update_batch - PullRequest
0 голосов
/ 12 апреля 2019

Как мне взять id на каждую итерацию из массива check_seeds и добавить каждое изменение в массив seeded[].

Другими словами, я хочу взять элемент из первой итерациии добавьте в первую итерацию, возьмите элемент из второй итерации и добавьте во вторую итерацию и так далее ...

На самом деле, для update_batch нам нужен третий параметр (первичный ключ, индекс) для обновления значений массивав строках базы данных, где id из строк базы данных совпадает с id в update_batch.

$check_seeds = $this->tournament_model->get_seeds($tournament_id);
$seeds = $this->input->post('seed');
foreach ($seeds as $key => $value){
    if(!empty($key) && !empty($value)){
        $seeded[] = array(
            'id' => (Add id here),
            'tournament_id' => $tournament_id,
            'stage_id' => $stage_id,
            'seed_id' => $value,
            'team_name' => $key,
        );
    $this->db->update_batch('tournament_seed', $seeded, 'id');
    redirect('organizer/tournaments);
    }
}

print_r ($ check_seeds)

Array
(
    [0] => Array
        (
            [id] => 3
            [tournament_id] => 713161746
            [stage_id] => 3
            [seed_id] => 3
            [team_name] => -V-ATTAX
        )

    [1] => Array
        (
            [id] => 4
            [tournament_id] => 713161746
            [stage_id] => 3
            [seed_id] => 3
            [team_name] => -V-ATTAX
        )

    [2] => Array
        (
            [id] => 5
            [tournament_id] => 713161746
            [stage_id] => 3
            [seed_id] => 3
            [team_name] => -V-ATTAX
        )

)

1 Ответ

0 голосов
/ 12 апреля 2019

в функции вашей модели get_seeds () вы можете запросить текущее максимальное значение id в качестве псевдонима и вернуть его вместе с результатом запроса:

function get_seeds($tournament_id) {
    $this->db->select_max('id', 'max_id');
    $this->db->where('tournament_id', $tournament_id);
    $result = $this->db->get('tournament_seed');
    return $result->result();
}

, затем в for_each () вашего контроллера вы увеличиваете этозначение:

$i=0;
foreach ($seeds as $key => $value){
    $i++;
    $seeded[] = array(
      'id' => $value->max_id + $i,
       //....
    );
}

Документы Codeigniter: Выбор данных , прокрутите вниз до select_max (), так как нет внутренней закладки

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