Вернуться в SQL "один ко многим" / "один ко многим" все в одном PHP-массив / объект?
tbl_customers
customer_id INT
...
...
tbl_orders
order_id
customer_id
Tbl_orders_products
product_id
идентификатор заказа
Предположим, я хочу получить доступ ко всем продуктам, заказанным по всем заказам одним клиентом?
Возможно ли вернуть это в одном массиве PHP, используя только 1 SQL-запрос (MySQL db)?
Ожидаемый результат:
Массив (
[customer_id] => 1,
[orders] = > array ([0] => массив (
[order_id] => [1],
[products] = > array ([0] => массив (
[product_name] = > 'widget')
)
)
)
1 ответ:
Это возможно.
Вы можете использовать левые соединения между каждой таблицей, но каждая строка будет содержать всю информацию о пользователе и информацию о заказе, а также информацию о конкретном элементе
example result rows user_id, username, order_id, product_id_1 user_id, username, order_id, product_id_2 user_id, username, order_id, product_id_3
Затем вы можете отформатировать его в нужный массив.