⚠ In case you've missed it, we have migrated to our new website, with a brand new forum. For more details about the migration you can read our blog post for website migration. This is an archived forum. ⚠

  •     

profile picture

Problema con el Where y set_relation | Problem with Where and set_relation



luiscordero29
  • profile picture
  • Member

Posted 05 August 2013 - 14:12 PM

Saludos Amigo, he conseguido la solución al siguiente problema:

 

Greetings Friend, I got the solution to the following problem:

A Database Error Occurred

Error Number: 1052

Column 'Estatus' in where clause is ambiguousSELECT `contratos`.*, CONCAT('', COALESCE(jf083c376.Rif, ''), ' ', COALESCE(jf083c376.Cliente, ''), '') as sf083c376, CONCAT('', COALESCE(j1d35f366.Rif, ''), ' ', COALESCE(j1d35f366.Cliente, ''), '') as s1d35f366, j84d11f44.Personal AS s84d11f44, j7a71f096.Clase AS s7a71f096, jcb65d60e.Uso AS scb65d60e, j092a3a96.Marca AS s092a3a96, jd56c9980.Modelo AS sd56c9980, j1c7c006f.Color AS s1c7c006f, jda127ca0.Tipo AS sda127ca0, j2293f555.Capacidad AS s2293f555, CONCAT('', COALESCE(j9c0412fe.TipoVehiculo, ''), ' | Total de Beneficios ', COALESCE(j9c0412fe.Total, ''), 'Bs') as s9c0412fe FROM (`contratos`) LEFT JOIN `clientes` as jf083c376 ON `jf083c376`.`IdCliente` = `contratos`.`IdContratante` LEFT JOIN `clientes` as j1d35f366 ON `j1d35f366`.`IdCliente` = `contratos`.`IdBeneficiario` LEFT JOIN `personal` as j84d11f44 ON `j84d11f44`.`IdPersonal` = `contratos`.`IdAcesor` LEFT JOIN `vehiculos_clases` as j7a71f096 ON `j7a71f096`.`IdClase` = `contratos`.`IdClase` LEFT JOIN `vehiculos_usos` as jcb65d60e ON `jcb65d60e`.`IdUso` = `contratos`.`IdUso` LEFT JOIN `vehiculos_marcas` as j092a3a96 ON `j092a3a96`.`IdMarca` = `contratos`.`IdMarca` LEFT JOIN `vehiculos_modelos` as jd56c9980 ON `jd56c9980`.`IdModelo` = `contratos`.`IdModelo` LEFT JOIN `vehiculos_colores` as j1c7c006f ON `j1c7c006f`.`IdColor` = `contratos`.`IdColor` LEFT JOIN `vehiculos_tipos` as jda127ca0 ON `jda127ca0`.`IdTipo` = `contratos`.`IdTipo` LEFT JOIN `vehiculos_capacidades` as j2293f555 ON `j2293f555`.`IdCapacidad` = `contratos`.`IdCapacidad` LEFT JOIN `tarifas_precios` as j9c0412fe ON `j9c0412fe`.`IdTarifa` = `contratos`.`IdTarifa` WHERE `Estatus` = '1' AND `contratos`.`IdOficina` = '1' LIMIT 25Filename: /home/luiscordero/Proyectos/ser/models/grocery_crud_model.phpLine Number: 87

Este es el controlador:

 

This is the controller:

function registrarcontratos()
  {
    if($this->session->userdata('logged_in'))
   {
     $session_data = $this->session->userdata('logged_in');
     $data['idusuario'] = $session_data['idusuario'];
     $data['username'] = $session_data['username'];
     $data['level'] = $session_data['level'];
     $data['idoficina'] = $session_data['idoficina'];
     $data['supervisor'] = $session_data['supervisor'];
     if ($data['level']<>1){ redirect('home/logout', 'refresh'); }
     $this->load->view('templates/header', $data);
     $this->load->view('templates/aside');    
     $content['titulo'] = 'REGISTRAR NUEVO CONTRATO';
     $this->load->view('templates/content', $content);
     try{
      $crud = new grocery_CRUD();
      $crud->where('Estatus','1');
      $crud->where('IdOficina',$data['idoficina']);
      $crud->set_table('contratos');
      $crud->set_subject('Gestor de Nuevos Contratos');
      // Comlumns
      $crud->columns('IdContratante','IdBeneficiario','IdAcesor','IdClase','IdUso','IdMarca','IdModelo','IdColor','IdTipo','IdCapacidad','Placa','Motor','Carroceria','IdTarifa','Grua','Frontera','FormaPago'); 
      // Action
      //$crud->add_action('Cobrar', base_url().'images/money-dollar.png', 'home/cobrar');
      // Fiels
      $crud->fields('IdContratante','IdBeneficiario','IdAcesor','IdClase','IdUso','IdMarca','IdModelo','IdColor','IdTipo','IdCapacidad','Placa','Motor','Carroceria','IdTarifa','Grua','Frontera','FormaPago','AsistenciaLegal','Muerte','Invalidez','GastosMedicos','Estacionamiento','Propetario','Cosas','Personas','Prima','Total');
      // Required
      $crud->required_fields('IdContratante','IdBeneficiario','IdAcesor','IdClase','IdUso','IdMarca','IdModelo','IdColor','IdTipo','IdCapacidad','Placa','Motor','Carroceria','IdTarifa','Grua','Frontera','FormaPago'); 
      // Display    
      $crud->display_as('IdContratante','Contratante');
      $crud->display_as('IdBeneficiario','Beneficiario');
      $crud->display_as('IdAcesor','Acesor');
      $crud->display_as('IdClase','Clase del Vehículo');
      $crud->display_as('IdUso','Uso del Vehículo');
      $crud->display_as('IdMarca','Marca del Vehículo');
      $crud->display_as('IdModelo','Modelo del Vehículo');
      $crud->display_as('IdColor','Color del Vehículo');
      $crud->display_as('IdTipo','Tipo de Vehículo');
      $crud->display_as('IdCapacidad','Capacidad del Vehículo');
      $crud->display_as('Placa','Placa del Vehículo');
      $crud->display_as('Motor','Serial del Motor');
      $crud->display_as('Carroceria','Serial del Carroceria');
      $crud->display_as('IdTarifa','Tipo de Tarifa');
      $crud->display_as('Grua','Servicio de Grua');
      $crud->display_as('Frontera','Cobertura de Frontera');
      $crud->display_as('FormaPago','Froma de Pago'); 
      // SetRelation
      $crud->set_relation('IdContratante','clientes','{Rif} {Cliente}',null);
      $crud->set_relation('IdBeneficiario','clientes','{Rif} {Cliente}');
      $crud->set_relation('IdAcesor','personal','Personal');
      $crud->set_relation('IdClase','vehiculos_clases','Clase');
      $crud->set_relation('IdUso','vehiculos_usos','Uso');
      $crud->set_relation('IdMarca','vehiculos_marcas','Marca');
      $crud->set_relation('IdModelo','vehiculos_modelos','Modelo');
      $crud->set_relation('IdColor','vehiculos_colores','Color');
      $crud->set_relation('IdTipo','vehiculos_tipos','Tipo');
      $crud->set_relation('IdCapacidad','vehiculos_capacidades','Capacidad');
      $crud->set_relation('IdTarifa','tarifas_precios','{TipoVehiculo} | Total de Beneficios {Total}Bs');
      // FieldsType
      $crud->field_type('IdOficina','hidden',$data['idoficina']);
      $crud->field_type('IdSupervisor','hidden',$data['idusuario']);
      $crud->field_type('Estatus','hidden',1);
      // invisible
      $crud->field_type('AsistenciaLegal','invisible');
      $crud->field_type('Muerte','invisible');
      $crud->field_type('Invalidez','invisible');
      $crud->field_type('GastosMedicos','invisible');
      $crud->field_type('Estacionamiento','invisible');
      $crud->field_type('Propetario','invisible');
      $crud->field_type('Cosas','invisible');
      $crud->field_type('Personas','invisible');
      $crud->field_type('Prima','invisible');
      $crud->field_type('Total','invisible');
      // callback
      $crud->callback_before_insert(array($this,'tarifas_precios_callback'));
      $crud->callback_before_update(array($this,'tarifas_precios_callback'));
      // unset
      $crud->unset_fields('FechaEmision','FechaVencimiento','Hora','Monto','Inicial','Giros','Estatus');
      $crud->unset_print();
      $crud->unset_export();
      //$crud->order_by('IdContrato','acs');
      $output = $crud->render();
     
      $this->_crud_output($output);
     
    }catch(Exception $e){
      show_error($e->getMessage().' --- '.$e->getTraceAsString());
    }
    $this->load->view('templates/footer');
   }
   else
   {
     //If no session, redirect to login page
     redirect('login', 'refresh');
   }
  }

he dado con la solución cambiandolo de la siguiente manera:

 

I found the solution changing it as follows:

$crud->where('contratos.Estatus','1');
$crud->where('contratos.IdOficina',$data['idoficina']);
$crud->set_table('contratos');

Resulta que cuando realizamos el Where y al mismo tiempo y un set_relation, si ambas tablas poseen una columna similar, el crud no reconoce dichas columnas, por lo tanto debemos ingresar manualmente en el where el nombre de la tabla.

 

It turns out that when we perform while Where and set_relation if both tables have a similar column, the crud does not recognize these columns, so we must manually enter the 'where the name of the table.

 

Nota: Traducción de Google

Note: Translation by Google