#php #mysql #select #mysqli #left-join
#php #mysql #выберите #mysqli #объединение слева
Вопрос:
Можете ли вы сказать мне, ребята, чего мне не хватает? как я могу поместить все данные в один массив? запрос atm выглядит следующим образом
$query = $this->db->query("SELECT
oc_fast_order_option.*,
oc_product_description.name AS product_name,
oc_fast_order.quantity
FROM oc_fast_order_option
LEFT JOIN oc_fast_order ON (oc_fast_order.id = '" . $order_id . "')
LEFT JOIN oc_product_description ON (oc_product_description.product_id = oc_fast_order.product_id)
WHERE order_id = '" . $order_id . "'");
return $query->rows;
результат этого запроса разделен на несколько массивов, и когда я выполняю цикл, я не могу отобразить результат должным образом
Array
(
[0] => Array
(
[order_option_id] => 56
[order_id] => 118
[order_product_id] => 52
[product_option_id] => 745
[product_option_value_id] => 1104
[name] => Цветове:
[value] => Черен
)
[1] => Array
(
[order_option_id] => 55
[order_id] => 118
[order_product_id] => 52
[product_option_id] => 746
[product_option_value_id] => 0
[name] => new input
[value] => 3
)
)
как я могу получить что-то подобное?
Array
(
[option_id] = >
Array(
[order_option_id] => 56
[order_option_id] => 55
)
[order_id] => 118
[order_product_id] => 52
[product_option_id] => 745
[product_option_value_id] => 1104
[options] = >
Array(
[name] => Цветове:
[value] => Черен
)
)
то, что я пытался сделать, это зациклить их и поместить в один массив
foreach ($query->rows as $data) {
$data['info_options'][] = array(
'options' => array(
'option_name' => $data['name'],
'value_name' => $data['value']
),
'quantity' => $data['quantity'],
'product_link' => HTTP_CATALOG.'index.php?route=product/productamp;product_id=' . $product_id,
'product_name' => $data['product_name']
);
}
но результат все еще не решетчатый
Array
(
[0] => Array
(
[options] => Array
(
[option_name] => Цветове:
[value_name] => Черен
)
[quantity] => 1
[product_name] => aapp
)
[1] => Array
(
[options] => Array
(
[option_name] => new input
[value_name] => 3
)
[quantity] => 1
[product_name] => aapp
)
[2] => Array
(
[options] => Array
(
[option_name] => Custom-Input
[value_name] => 5
)
[quantity] => 1
[product_name] => aapp
)
)
ОБНОВИТЬ
наконец-то я получаю то, что мне было нужно
Array
(
[op] => Array
(
[0] => Array
(
[name] => Цветове:
[value] => Черен
)
[1] => Array
(
[name] => new input
[value] => 3
)
[2] => Array
(
[name] => Custom
[value] => 5
)
)
[name] => aapp
[quantity] => 1
)
то, что я сделал, это 2 запроса, один для параметров и один для информации rest
затем я зацикливаю запрос параметров и помещаю результат в один массив, затем зацикливаю второй запрос и помещаю в новый массив, куда я добавляю и массив параметров
Комментарии:
1. Это не обычный формат — для достижения этого вам нужно написать некоторый код
2. что вы имеете в виду?
3. Именно то, что я сказал: ожидаемый формат не настолько распространен, чтобы его можно было достичь с помощью встроенных функций PHP. Запрос к базе данных всегда будет возвращать полные строки вместо ожидаемой вами смешанной формы — но написание некоторого кода для преобразования массива не должно быть слишком сложным. Попробуйте и приложите свою попытку к вопросу, если у вас возникнут какие-либо проблемы с этим
4. я что-то сделал, но все еще не получаю то, что хочу, я обновляю вопрос
5. Это зависит от правил в вашей системе, которые вы не добавили к вопросу. Попробуйте и поделитесь этим, если что-то не сработает