Как уже объяснял @Raza Gill, вам нужно присоединиться к таблицам (LEFT JOIN) следующим образом
$this->db->select('*');
$this->db->from('orders');
$this->db->join('orders_content', 'orders.oid = orders_content.oid');
$query = $this->db->get();
В вашей модели вам нужно собрать данные для передачи в представление.,Вы не делаете это правильно, потому что вы делаете assignemnt, который не имеет никакого смысла (вы помещаете туда предложение соединения?)
Это должно быть так:
$data =array();
foreach($q->result_array() as $orders)
{
$data[] = $orders;
}
return $data;
Следуя шаблону MVC , вы должны теперь извлечь этот массив ($ data) в свой CONTROLLER, который обрабатывает затем переход к правильному представлению.
Итак, в вашем контроллере вы должныесть что-то вроде этого:
Отредактированный контроллер : Хорошо, основываясь на вашем комментарии, вы хотите вызвать это представление product_order.Вы не можете сделать это напрямую.Представления загружаются (обычно в контроллерах, но не обязательно) в соответствии с URL-адресом, поэтому, если вы хотите, чтобы доступ к странице осуществлялся по адресу index.php/product_order
, вам необходимо иметь файл с именем product_order.php
в папке контроллеров.Если вы не указываете 2-й сегмент URI (как в вашем случае), вам нужно использовать функцию по умолчанию index()
.Тогда ваш контроллер будет выглядеть так:
class Product_order extends CI_Controller {
function index()
{
$this->load->model('orders_model'); // (I'm assuming you're not autoloading it. Otherwise, just skip the loading of this model);
$data['orders'] = $this->orders_model->get();
$this->load->view('product_order',$data);
}
}
Если вы в будущем захотите добавить метод, скажем, для просмотра определенного продукта, вы можете сделать `index.php / product_order / view_product / 20Например, у вас будет:
- product_order: -> контроллер (product_order.php)
- view_product: -> метод внутри контроллера AND
- 20: -> идентификатор выбранного вами продукта, который необходимо передать вышеописанному методу.Как
function view_product($id) { /....}
.Надеюсь, что MVC проясняется для вас.
// Конец редактирования;
Вы можете сейчас, на ваш взгляд 'product_order.php ', соберите массив (в CI индексы массива, предоставленные представлению, преобразуются в одноименную переменную) с foreach, как вы делаете.Но будьте осторожны, вы называете их так, как если бы они были объектами, а вместо этого вы предоставляете ассоциативный массив.ТАК это должно быть так:
<?php foreach($orders as $order) : ?>
<tr>
<td><?php echo $order['product_id']?></td>
<td><?php echo $order['title'];?></td>
<td><?php echo $order['price'];?></td>
<td><?php echo $order['quantity'];?></td>
</tr>
<?php endforeach; ?>
С вашим кодом все было бы в порядке, если бы вы использовали $ q-> result () вместо $ q-> result_array ()