Как исправить проблему с массивом в среде Codeigniter? - PullRequest
0 голосов
/ 18 июня 2019

it the prespcription table,here you see medicine_id column can not get 3 inputs from dropdown menushere select the dropdown value

Я новичок в CodeIgniter. У меня есть некоторые проблемы в массивах. У меня есть 3 выпадающих меню, чтобы выбрать лекарство, которое выбирается из базы данных лекарств. но я не понимаю, как положить 3 значения в одном поле таблицы. Есть две таблицы:

  1. Стол для лекарств (drug_id, Medicine_name)
  2. Таблица рецептов (рецептурный_идентификатор, пациент_идентификатор, симптомы, дисгонис, лекарственный_идентификатор, m_note, дата)

Как поместить несколько значений в столбец Medicine_id?

Ответы [ 3 ]

2 голосов
/ 18 июня 2019

Первый подход: Не рекомендуется

Вы можете установить поле drug_id как varchar и сохранить все идентификаторы лекарств в разделенной запятыми форме.Когда вам нужно присоединить таблицу рецептов к таблице лекарств, вы должны использовать FIND_IN_SET.Но это не рекомендуется , потому что это противоречит правилам нормализации.и это замедлит ваше выполнение.

Второй подход:

Вы можете создать другую таблицу, в которой вы будете хранить prescription_id и Medicine_id.Как сказал @Sam Tigle.

2 голосов
/ 18 июня 2019

Вы не можете поместить несколько значений в один столбец в MySQL.У вас здесь есть так называемое соотношение 1: n.В 1 рецепте может быть n лекарств.

Для представления этого отношения в mysql вам необходимо создать новую таблицу

Prescription_Medicine (prescription_id, drug_id)

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

1 голос
/ 24 июня 2019

Вы можете сохранить массив в поле базы данных различными способами

  1. Сериализованная форма
  2. Строка с разделителями-запятыми
  3. JSON (Подробнее о типе данных JSON здесь )

Но это не правильное решение вашей проблемы . Вы должны рассмотреть обходной путь, как указано ниже:

Обычно в одном рецепте может быть несколько лекарств. Следовательно, существует отношение Один-ко-многим .

Рекомендуется создать две таблицы как prescriptions и prescription_medicines, сохранить сведения prescription в таблице prescriptions и затем добавить каждый medicine в prescription в виде строки в prescription_medicines Таблица.

Структура таблицы может быть такой, как показано ниже.

prescriptions стол

id (primary_key), doctor_id, patient_i`, date, .....

prescription_medicines стол

id, prescription_id, medicine_id, dosage, ...

Здесь prescription_id - это primary_key из prescriptions_table и medicine_id должно быть primary_key из medicines_table

Теперь мы можем связать рецепты с таблицей лекарств.

ПРИМЕР ЗАПРОСА: получить назначенные лекарства и их дозировку для пациента, имеющего идентификатор пациента 123

SELECT med.name, pres_med.dosage 
FROM prescriptions AS pres
JOIN prescription_medicines AS pres_med ON pres_med.prescription_id = pres.id
JOIN medicines AS med ON med.id = pres_med.medicine_id
WHERE pres.patient_id = 123;
-- ADD YOUR OWN LOGIC TO GET THE LASTEST/RELEVANT PRESCRIPTION
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...