Так что я действительно плохо формулирую это, поэтому, пожалуйста, потерпите меня.
Я создаю сайт, на котором люди могут покупать подарки для детей, и каждый ребенок может иметь несколько подарков в своем списке.
У меня есть две таблицы children
и gift_list
. Таблицы очень простые со следующими строками:
children
- id
- name
- age
- status
gift_list
- id
- child_id
- description
- status
Я пытаюсь захватить все подарки, которые принадлежат ребенку, и вернуть их как массив дочерних объектов, но я получаю странные результаты.
Вот мой текущий оператор SQL:
SELECT * FROM children JOIN gift_list WHERE gift_list.child_id = children.id
Результат:
Child A:
- id
- name
- age
- status
- gift A
Child A:
- id
- name
- age
- status
- gift B
Я знаю, что мне нужно перебрать таблицу gift_list
, а затем добавить их в массив, но я новичок в MySQL и заблудился с концепцией и не могу придумать, как правильно искать то, что Я пытаюсь достичь. Конечный результат идеи:
Child A:
- id
- name
- age
- status
- gifts
- gift A
- description
- status
- gift B
- description
- status
Любая помощь будет высоко ценится! В качестве примечания и, вероятно, важно, я использую PHP-фреймворк CodeIgniter.
EDIT:
После нескольких неудачных попыток, используя приведенные ниже предложения, я наконец-то получил следующий код для работы ... может быть, есть лучший / более чистый способ сделать это ... если так, пожалуйста, подскажите мне:)
<code>$children = $this->db->get('children');
$gift_list = $this->db->get('gift_list');
foreach ( $children->result() as $child )
{
$gifts = array();
foreach ( $gift_list->result() as $gift )
{
if ( $child->id == $gift->children_id )
{
array_push($gifts, $gift);
$child->gifts = $gifts;
}
}
}
echo "<pre>";
print_r($children->result());
echo "
";
Спасибо за все предложения!