Php 在codeigniter、querybuilder和“中查询”;“古典”;
我正在为一个需要加入(教师规范)的项目构建一个web应用程序。所以,我有一个问题:我没有sql知识。我正在尝试创建它,但没有成功。在图中可以找到我的数据库结构。users.username是唯一的,它们在请求中是相同的。申请人。。。因此,我需要检索表requests中给定用户名的vehicle_id列表 因此,在我的控制器中,我有: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[
$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
字段。这是一种很好的方法,只需快速浏览一下数据库模式,就可以轻松查看正在发生的事情。