适合刚接触php和ci框架的人,本人也是小白
原因:官方给的数据库查询方法可能不利于记忆使用,官方给的一些方法只能进行基础查询,每次复合查询都需要拼接条件,自己定义定义方法直接调用方法即可
操作步骤:
1.ci框架官网下载好解压后的文件夹会有application这个目录,在application目录下找到models子目录,在models子目录里建一个PHP文件(名字随便起,如Base_model.php)
这个文件里就是给你写自己定义的数据库查询方法,但开头要这样写(如下),自己定义的方法写在__construct方法下面
<?php
class Base_model extends CI_Model
{
public $table = "";
public $error = "";//操作数据库产生的错误信息,自行定义的
public $primary_key = "";//主键
public function __construct()
{
if (!isset($this->db)) {
$this->load->database();
}
}
}
2.然后你数据库里有什么表,你就在models目录里建相应的模型(例如有user表,可以建一个User.php模型),以此类推,然后在模型里这样写,不用多写了,(你也可以把方法写这里面,我忽略)
<?php
require_once "Base_model.php"; //这里模型和Base_model.php都是在models目录下的
class User extends Base_model //这里是大写的User继承Base_model而不是继承CI_model
{
public function __construct()
{
parent::__construct();
$this->table = "user"; //这是表名,user表
$this->primary_key = "id"; //这是主键自增id,可不写
}
}
3.我在Base_model.php里有查询所有和修改的方法(这里就举两个简单的小例子,复合方法我后续会更新)
<?php
class Base_model extends CI_Model
{
public $table = "";
public $error = "";//操作数据库产生的错误信息
public $primary_key = "";//主键
public function __construct()
{
if (!isset($this->db)) {
$this->load->database();
}
}
/**
* @param bool $onlyOne
* 查询这个表的所有数据
* 无需传递参数
*/
public function lists($onlyOne=true,$select="*")
{
$this->db->from($this->table); //这里是表名
$res=$this->db->get();
$row = $res->result_array();
return $row;
}
/**
* 修改数据
* 传俩个数组过来$data=[‘name‘=>$name];
* $data为修改的字段,$where为where条件,两个都是数组
*/
public function update($data,$where)
{
return $this->db->update($this->table,$data,$where);
}
}
4.上面查询和修改的方法在控制器(控制器都可以用)里的用法
//查询所有数据
//$this->表名->方法名(要传递的参数);
$this->user->lists();
//
//修改数据
先要有修改的数据(数组)$data,where条件(数组)$where
$data=[‘id‘=>1,‘name‘=>‘lisi‘];
$where=[‘id‘=>$id];
//$this->表名->方法名(要传递的参数);
$this->user->update($data,$where);