Вернуться в 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 2

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

Затем вы можете отформатировать его в нужный массив.