Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Chamando a função de modelo no codeigniter de exibição

MVC ou não para MVC


A primeira coisa que devo observar é que É impossível escrever MVC clássico em PHP . Na verdade, os frameworks PHP do tipo MVC, como CodeIgniter ou Yii, implementam uma espécie de MVP no qual:
  • a visualização é passiva e não conhece o modelo
  • apresentador (controlador) altera o estado do modelo, lê as informações e as passa para visualização

Créditos para tereško

Abordagem do CodeIgniter


No entanto, particularmente no CodeIgniter, você tem 3 passos:
  • Crie um modelo para consultar o banco de dados e retornar os dados (como uma matriz ou objeto)
  • Crie um Controlador para carregar e busque o resultado do Modelo (um método do Model) e passar os dados retornados para a view
  • Crie uma Visualização e use loops PHP para ecoar o resultado, construa o HTML.

Reunindo todos


Considerando a abordagem acima, você precisa buscar o resultado do banco de dados em seu modelo:

aplicativo/modelos/produto.php
class Product extends CI_Model
{
    public function get_product($product_id)
    {
        $this->db->select('*')->from('products');
        $this->db->where('product_id', $product_id);
        $this->db->join('versions', 'versions.product_id = products.product_id');
        $query=$this->db->get();
        return $query->first_row('array');
    }
}

Em seguida, busque e passe o resultado dentro do Controller:

aplicativo/controladores/produtos.php
class Products extends CI_Controller
{
    public function view($product_id)
    {
        $this->load->model('product');
        // Fetch the result from the database
        $data['product'] = $this->product->get_product($product_id);
        // Pass the result to the view
        $this->load->view('product_view', $data);
    }
}

Por fim, use os dados retornados na view, para gerar a lista:

aplicativo/views/product_view.php
// Use $product to display the product.
print_r($product);