Полностью запутался в том, как добиться чего-то – у меня три таблицы;
В таблице заказов содержится информация о заказе, таблица элементов содержит номер идентификатора продукта и номер идентификатора заказа, а таблица продуктов содержит все детали продукта.
То, что я пытаюсь сделать, это иметь страницу «Мои заказы», где вы можете просмотреть все свои прошлые заказы, и я бы хотел, чтобы у вас была следующая структура …
ЗАКАЗЫ
НОМЕР ЗАКАЗА 1
НОМЕР ЗАКАЗА 2
НОМЕР ЗАКАЗА 3
Теперь я могу легко перечислить все заказы, и я могу перечислить все элементы в определенном порядке, но я потерял то, как объединить эти три таблицы таким образом, что я могу перечислить их в вышеуказанном формате, я предполагаю, что могу ПРИСОЕДИНИТЬСЯ на всех трех, но я не могу заставить их выводить в любом месте рядом с правильным способом.
Кто-нибудь знает хороший способ сделать это? Спасибо заранее.
Вы можете использовать объединенный запрос, чтобы получить все заказы с их товарами
/* raw sql query */ SELECT o.*,p.*,o.id AS order_id,p.id AS product_id FROM Orders o LEFT JOIN Items i ON (o.id=i.order_id) LEFT JOIN Products p ON(p.id = i.product_id) ORDER BY order_id
Создайте функцию в своей модели и выполните ниже запроса
/* Using Active record */ $orders=$this->db->select('o.*,p.*,o.id AS order_id,p.id AS product_id') ->from(' Orders o ') ->join(' Items i','o.id=i.order_id','LEFT') ->join(' Products p','p.id = i.product_id','LEFT') ->order_by('order_id') ->get() ->result();
Получите результаты от модели в контроллере, а затем передайте ее для просмотра, при этом вы можете перебирать свои записи запросов как
$currentParent = false; foreach ($orders as $o) { if ($currentParent != $o->order_id) { echo '<h1>ORDER NUMBER ' . $o->order_id . '</h1>'; $currentParent = $o->order_id; } echo '<p>' . htmlentities($o->product_name) . '</p>'; }
Это будет выводиться как
<h1>ORDER NUMBER 1</h1> <p>product 1</p> <p>product 2</p> <h1>ORDER NUMBER 2</h1> <p> product 3</p>
Если у вас есть другая структура структуры html, соответственно, я привел приведенный выше пример, используя заголовок и тег абзаца
Редактируйте для использования в нем теги списка, вы можете сделать это
echo '<ul><li>'; $currentParent = false; foreach ($orders as $o) { if ($currentParent != $o->order_id) { if ($currentParent != false) { echo '</ul></li><li>'; } echo '<h1>ORDER NUMBER ' . $o->order_id . '</h1><ul>'; $currentParent = $o->order_id; } echo '<li>' . htmlentities($o->product_name) . '</li>'; } echo '</li></ul>';
Это будет выводиться как
<ul> <li> <h1>ORDER NUMBER 1</h1> <ul> <li><p>product 1</p></li> <li><p>product 2</p></li> </ul> </li> <li> <h1>ORDER NUMBER 2</h1> <ul> <li><p> product 3</p></li> </ul> </li> </ul>