Для начала вам это не нужно.
$patient_input_data = array();
Потому что, когда вы совершите вызов
$patient_input_data['patientname'] = $this->input->post('patientname');
Будет создан массив $patient_input_data
.Есть моменты, когда вы можете захотеть убедиться, что у вас есть массив, даже если он пустой.Но это не один из них.
Для входных значений массива, т. Е. testname[]
, получить данные, оставив скобки в конце имени.Вот так.
//test data
$testname = $this->input->post('testname'); //instead of post('testname[]')
$price = $this->input->post('price');
Переменные $testname
и $price
будут массивами с элементом для каждого поля в форме.
Мне кажется, что эти два ввода необходимы, поэтому вы должны добавить код, чтобы проверить, что это так.Класс проверки формы отлично подходит для этой цели.
Массив $test_input_data
- это тот случай, когда вы захотите , чтобы массив существовал - даже если он пустой.Вам не нужно явно указывать значение индекса при добавлении элементов в массив, т.е. $test_input_data[$i] = array(...
, потому что $test_input_data[] = array(...
будет работать просто отлично, но в любом случае это не принесет вреда.
На модели.Первая часть хороша.Для второго вам нужно создать массивы, которые содержат идентификатор пациента, который вы получили из первой вставки, и добавить это значение к каждому из подмассивов в аргументе $tests
.Модель становится такой.
public function insert_bby($patient, $tests)
{
$this->db->insert('patients', $patient);
$patient_id = $this->db->insert_id();
// add the patient id key/value to each sub-array in $tests
foreach ($tests as $test)
{
$test['patient id'] = $patient_id;
}
// will return the number of rows inserted or FALSE on failure
return $this->db->insert_batch('tests', $tests);
}