Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在codeigniter、querybuilder和“中查询”;“古典”;_Php_Sql_Database_Codeigniter - Fatal编程技术网

Php 在codeigniter、querybuilder和“中查询”;“古典”;

Php 在codeigniter、querybuilder和“中查询”;“古典”;,php,sql,database,codeigniter,Php,Sql,Database,Codeigniter,我正在为一个需要加入(教师规范)的项目构建一个web应用程序。所以,我有一个问题:我没有sql知识。我正在尝试创建它,但没有成功。在图中可以找到我的数据库结构。users.username是唯一的,它们在请求中是相同的。申请人。。。因此,我需要检索表requests中给定用户名的vehicle_id列表 因此,在我的控制器中,我有: $data['your_vehicles'] = $this->vehicle_model->get_your_vehicles($_SESSION[

我正在为一个需要加入(教师规范)的项目构建一个web应用程序。所以,我有一个问题:我没有sql知识。我正在尝试创建它,但没有成功。在图中可以找到我的数据库结构。users.username是唯一的,它们在请求中是相同的。申请人。。。因此,我需要检索表requests中给定用户名的vehicle_id列表

因此,在我的控制器中,我有:

 $data['your_vehicles'] = $this->vehicle_model->get_your_vehicles($_SESSION['username']);
因此,我给我的模型提供了登录用户的用户名。方法如下:

 public function get_your_vehicles($username){

 $this->db->select('users.*, requests.*');
 $this->db->from('users');
 $this->db->join('requests', 'requests.applicant = users.username', 'inner');
 $query=$this->db->get();
 return $query ->result();

 //return $query->result_array();

 }

首先,我无法将$username变量传递到查询中,这是一个问题。。。您能帮我建立查询吗?

会话['username]保存了哪些信息

 $data['your_vehicles'] = $this->vehicle_model->get_your_vehicles($_SESSION['username']);
但是如果$\u SESSION['username']获得用户,这将是您的解决方案

public function get_your_vehicles($username){

    $this->db->select('users.*, requests.*');
    $this->db->from('users');
    $this->db->join('requests', 'requests.applicant = users.username', 'inner');
    $this->db->where('users.username',$username);
    $query=$this->db->get();
    return $query ->result();

    // $query ->result() ==> Array Objects
    // $query->result_array() ==> Array Arrays

}
如果要在查询中获取车辆数据

public function get_your_vehicles($username){

    $this->db->select('users.*, requests.*,vehicles.*');
    $this->db->from('users');
    $this->db->join('requests', 'requests.applicant = users.username', 'inner');
    $this->db->join('vehicles', 'vehicles.id_vehicle = requests.vehicle_id', 'inner');
    $this->db->where('users.username',$username);
    $query=$this->db->get();
    return $query ->result();

    // $query ->result() ==> Array Objects
    // $query->result_array() ==> Array Array
}

关于SQL知识的一些提示:您可以使用
id
,而不是将
用户名
用作外键(识别哪个用户提出了哪个请求的键),因为它也是唯一的,可能更快(与您使用的
车辆id
完全相同)。这也意味着您可能会丢失
申请人\u电子邮件
,您可以通过所述
id
从用户处检索该电子邮件。车辆中的钥匙(
id\u vehicle
)也可以命名为
id
(因此您的所有主键都很容易识别!)对于不懂SQL的人来说,其余的看起来很整洁;)只是一个额外的评论和提示;命名外键
单数tablename
+
\u id
。因此,如果要将用户连接到请求,请在requests表中创建一个
user\u id
字段。这是一种很好的方法,只需快速浏览一下数据库模式,就可以轻松查看正在发生的事情。