2016-04-10 2 views
0

J'ai 3 tables dans une base de données.Numéro d'erreur: 1066 Table/alias non unique 'core_user'

core_user core_company ct_company

je veux rejoindre 2 tables core_user et core_company où la clé est foriegn colonne CMP_ID ..

mais il affiche une erreur.

Numéro d'erreur: 1066

Table pas unique/alias: 'core_user'

SELECT * FROM (core_user, core_user) INSCRIPTION SUR core_companycore_company. cmp_id = core_user. cmp_idusr_email = '[email protected]' ET usr_password = '123456' ET cmp_name = 'corpoleave'

Nom du fichier: F: /xampp/htdocs/corpoLeave/application/models/loginmodel.php

ligne Numéro: 10

Voici mon modèle. aidez s'il vous plaît. grâce

<?php class LoginModel extends CI_Model{ 

    public function login_valid($email,$password,$cname){ 


     $q= $this->db->where(['usr_email'=>$email,'usr_password'=>$password,'cmp_name'=>$cname]) 
          ->from('core_user'); 

          $this->db->join('core_company', 'core_company.cmp_id = core_user.cmp_id'); 
          $q = $this->db->get('core_user')->result(); 
          if($q->result()==true) 
          { 
           return $q->row()->user_id; 


          } 
          else{ 

           return false; 
          } 

}} 

?> 
+0

Juste une note si vous utilisez CI 3 versions noms de classes et de fichiers ne devraient avoir la première lettre majuscule http://www.codeigniter.com/user_guide/general/models .html # anatomie d'un modèle – user4419336

Répondre

1

Dans le Codeigniter Query Builder, les méthodes et get()from() fonctionnent de manière semblable.

Comme on le voit sur la Codeigniter docs:

get()

$query = $this->db->get('mytable'); 
// Produces: SELECT * FROM mytable 

de()

$this->db->select('title, content, date'); 
$this->db->from('mytable'); 
$query = $this->db->get(); 
// Produces: SELECT title, content, date FROM mytable 

Les deux get("tablename") et from("tablename") méthodes append efficacement FROM tablename au bâti déclaration, à la recherche quelque chose comme ceci:

$this->db->select('title, content, date'); 
$this->db->from('mytable'); 
$query = $this->db->get('mytable'); 
// Produces: SELECT title, content, date FROM mytable FROM mytable 

(Notez la double « FROM » déclaration)

vous obtenez l'erreur parce que vous utilisez à la fois from() et get() avec les noms de tables. Vous pouvez supprimer l'instruction from() ou supprimer le nom de table de l'instruction get().

Cela ressemblerait à ceci:

<?php 

class LoginModel extends CI_Model { 

    public function login_valid($email, $password, $cname) { 
     $this->db->where(['usr_email' => $email, 'usr_password' => $password, 'cmp_name' => $cname]); 
     $this->db->from('core_user'); 
     $this->db->join('core_company', 'core_company.cmp_id = core_user.cmp_id'); 

     $q = $this->db->get(); 

     if ($q->result()) { 
      return $q->row()->user_id; 
     } else { 
      return false; 
     } 
    } 

}