Hola, estoy tratando de hacer consultas simples a una base de datos MySQL desde CodeIgniter. Para eso tengo una vista llamada "Menú", aquí la voy a llenar con 3 categorías: Comidas(2), Bebidas(1) y Postres(3). En la base de datos tengo 2 tablas, producto y categoria la cual presento a continuación:
tabla producto
id, nombre, descripcion,precio,imagen,negocio_id,categoria_id
tabla categoria
id. nombre --Aquí va el nombre(Comidas, bebidas o postres)
En el modelo MenuModel tengo estas funciones:
public function getAllComidas($id=2)
{
$this->db->select('*');
$this->db->from(TABLE_PRODUCTO);
$this->db->where('categoria_id',$id);
$query = $this->db->get();
return $query->result_array();
}
public function getAllBebidas($id=1)
{
$this->db->select('*');
$this->db->from(TABLE_PRODUCTO);
$this->db->where('categoria_id',$id);
$query = $this->db->get();
return $query->result_array();
}
public function getAllPostres($id=3)
{
$this->db->select('*');
$this->db->from(TABLE_PRODUCTO);
$this->db->where('categoria_id',$id);
$query = $this->db->get();
return $query->result_array();
}
En el controlador tengo lo siguiente:
public function index()
{
$data['menu'] = $this->MenuModel->getAllComidas();
$this->load->view('estaticos/header');
$this->load->view('dinamicos/menu/menus', $data);
$this->load->view('estaticos/menu_izquierdo');
$this->load->view('estaticos/footer');
$this->load->view('estaticos/menu_derecho');
}
public function getBebidas()
{
$data['menuBebidas'] = $this->MenuModel->getAllBebidas();
$this->load->view('estaticos/header');
$this->load->view('dinamicos/menu/menus', $data);
$this->load->view('estaticos/menu_izquierdo');
$this->load->view('estaticos/footer');
$this->load->view('estaticos/menu_derecho');
}
public function getPostres()
{
$data['menuPostres'] = $this->MenuModel->getAllPostres();
$this->load->view('estaticos/header');
$this->load->view('dinamicos/menu/menus', $data);
$this->load->view('estaticos/menu_izquierdo');
$this->load->view('estaticos/footer');
$this->load->view('estaticos/menu_derecho');
}
En la vista utilizo esto para mostrar los datos llamando solo la función de comidas:
<?php
foreach ($menu as $menu) {
echo '
<div class="box-body">
<ul class="products-list product-list-in-box">
<li class="item">
<div class="product-img">
<img src="'.base_url('assets/dist/img/default-50x50.gif').'" alt="Product Image">
</div>
<div class="product-info">
<a href="javascript::;" class="product-title">'.$menu['nombre'].'<span class="label label-warning pull-right">Editar</span></a>
<span class="product-description">'
.$menu['descripcion'].'
</span>
<span class="label label-danger pull-right">eliminar</span></a>
<a onclick="if(confirma() == false) return false" href="'.base_url().'MenusController/borrar_item/'.$menu['id'].'">Eliminar</a>
</div>
</li><!-- /.item -->
</ul>
</div><!-- /.box-body -->';
}
?>
Y si me funciona, me muestra las comidas:
Ver imagen mas grande aquí
Pero si vuelvo a utilizar el mismo fragmento de código y solo cambiando el nombre de la función por ejemplo a :
foreach ($menu as $menuBebidas)
Me muestra un elemento repetido y no todas las bebidas o postres dependiendo del ID:
Ver imagen mas grande aquí
Si tienen la posibilidad de decirme si estoy bien o como sería la manera correcta.
Les doy las gracias anticipadas