Объедините одну строку таблицы базы данных со сводными данными из другой таблицы базы данных в методе модели CodeIgniterPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Объедините одну строку таблицы базы данных со сводными данными из другой таблицы базы данных в методе модели CodeIgniter

Сообщение Anonymous »

Я хочу объединить два массива из двух отдельных запросов. Я хранил свои продукты в двух отдельных таблицах: одна для общей информации, такой как название, описание, цена и т. д.; а другой - для различных деталей, например, размера и цвета одежды.
Итак, моя база данных для продуктов структурирована следующим образом:

Код: Выделить всё

products table:
p_id | title | descr | etc

product_attrs table:
attr_id | products.p_id | name | value
где имя и значение могут быть name = Size value = Large
Если я пытаюсь получить все сведения о продукте в одном запросе, например это:

Код: Выделить всё

this->db->select('products.title,
p.description,
p.price,
p.stock,
p.name,
p.value');
$this->db->from('p');
$this->db->where('p.p_id', $id);
$this->db->join('product_attrs', 'product_attrs.product_id = p.p_id', 'inner');
$result = $this->db->get();

return $result->result_array();
Я получаю массив, заполненный количеством пар имя/значение, которые есть в таблице Product_attributes для этого продукта. Итак, если у продукта есть, скажем, 5 атрибутов, я бы вернул все 5 раз следующим образом:

Код: Выделить всё

Array (
[0] => Array (
[title] => Modest Swimsuit - Full body
[description] => UV +50 Protection - Chlorine Resistant - Water Resistant - Quick Drying - Maximum Breathe Ability- Sea Water Resistant
[price] => 59.95
[stock] => 20
[name] => Brand
[value] => Modestly Active Swimwear
)
[1] => Array (
[title] => Modest Swimsuit - Full body
[description] => UV +50 Protection - Chlorine Resistant - Water Resistant - Quick Drying - Maximum Breathe Ability- Sea Water Resistant
[price] => 59.95
[stock] => 20
[name] => Colour
[value] => Black and Light Blue
)
[2] => Array (
[title] => Modest Swimsuit - Full body
[description] => UV +50 Protection - Chlorine Resistant - Water Resistant - Quick Drying - Maximum Breathe Ability- Sea Water Resistant
[price] => 59.95
[stock] => 20
[name] => size
[value] => small
)
[3] => Array (
[title] => Modest Swimsuit - Full body
[description] => UV +50 Protection - Chlorine Resistant - Water Resistant - Quick Drying - Maximum Breathe Ability- Sea Water Resistant
[price] => 59.95
[stock] => 20
[name] => size
[value] => medium
)
[4] => Array (
[title] => Modest Swimsuit - Full body
[description] => UV +50 Protection - Chlorine Resistant - Water Resistant - Quick Drying - Maximum Breathe Ability- Sea Water Resistant
[price] => 59.95
[stock] => 20
[name] => size
[value] => large
)
)
Поэтому я решил разделить запросы для каждой таблицы, чтобы получить по одному набору результатов для каждой. Но я хочу объединить их оба, чтобы можно было вернуть данные обратно в контроллер в виде одного массива и отобразить их в моем представлении. Вот как я запросил две таблицы, мне просто нужен способ объединить результаты обеих:

Код: Выделить всё

$this->db->select('p.title,
p.description,
p.price,
p.stock');
$this->db->from('p');
$this->db->where('p_id', $id);
$result = $this->db->get();

$this->db->select('name, value');
$this->db->from('product_attrs');
$this->db->where('p_id', $id);
$result2 = $this->db->get();
Если кто-то сможет помочь, я буду очень признателен. Спасибо
РЕДАКТИРОВАТЬ:
Я сейчас ищу функцию array_merge() в php.net, но если я сделаю это:

Код: Выделить всё

$result = $this->db->get();
$array1 = $result->result_array();

$result2 = $this->db->get();
$array2 = $result2->result_array();
$data = array_merge($array1,$array2);
return $data;
Я получаю более одного массива:

Код: Выделить всё

Array (
[0] => Array (
[title] => Modest Swimsuit - Full body
[description] => UV +50 Protection - Chlorine Resistant - Water Resistant - Quick Drying - Maximum Breathe Ability- Sea Water Resistant
[price] => 59.95
[stock] => 20
)
[1] => Array (
[name] => Brand
[value] => Modestly Active Swimwear
)
[2] => Array (
[name] => Colour
[value] => Black and Light Blue
)
[3] => Array (
[name] => size
[value] => small
)
[4] => Array (
[name] => size
[value] => medium
)
[5] => Array (
[name] => size
[value] => large
)
)
Есть ли, на мой взгляд, способ получить значения из приведенного выше массива?

Подробнее здесь: https://stackoverflow.com/questions/151 ... e-table-in
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»