convertion.php

config.php

1.在config.php做数据库连接配置

6月16  ThinkPHP连接数据库及Model数据模型层--------查询及数据添加

2.修改配置

 /* 数据库设置 */
    'DB_TYPE'               =>  'mysql',     // 数据库类型
    'DB_HOST'               =>  'localhost', // 服务器地址
    'DB_NAME'               =>  'mydb',          // 数据库名
    'DB_USER'               =>  'root',      // 用户名
    'DB_PWD'                =>  '',          // 密码
    'DB_PORT'               =>  '',        // 端口
    'DB_PREFIX'             =>  '',    // 数据库表前缀
    'DB_PARAMS'              =>  array(), // 数据库连接参数    
    'DB_DEBUG'              =>  TRUE, // 数据库调试模式 开启后可以记录SQL日志
    'DB_FIELDS_CACHE'       =>  true,        // 启用字段缓存
    'DB_CHARSET'            =>  'utf8',      // 数据库编码默认采用utf8
    'DB_DEPLOY_TYPE'        =>  0, // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
    'DB_RW_SEPARATE'        =>  false,       // 数据库读写是否分离 主从式有效
    'DB_MASTER_NUM'         =>  1, // 读写分离后 主服务器数量
    'DB_SLAVE_NO'           =>  '', // 指定从服务器序号

Model:数据库中每张表对应一个模型,Model是一个类,类名是表名,类里面的成员变量是列名,把一张表对应为一个类,其中一条数据对应一个对象

如果我们对该表的模型没有特殊操作的话可以不用建立该模型(换句话说就是不需要再Model里面新建形如InfoModel.class.php的模型)

 

1.实例化Model的三种方式:(以car表为例)

 1.1 采用new的方式,需要新建模型    $car =  new  命名空间CarModel(); 

 CarModel.class.php

<?php
namespace Admin\Model;
use Think\Model;
class CarModel extends Model
{
    
}

实例化MODEL类

$car = new \Admin\Model\CarModel();//根命名空间Admin

var_dump($car);//要求创建模型文件(子类对象里面的)

1.2  $car = D(‘模型标志’);  

a)         $car= D("car");

b)        该$goods是父类Model的对象,但是操作的数据表还是sw_goods

c)         $obj = D();  实例化Model对象,没有具体操作数据表,与M()方法效果一致

快捷的D方法

$car = D("car");

var_dump($car);

1.3  $car = M("模型标志");

a)         实例化父类Model

b)        可以直接调用父类Model里边的属性,获得数据库相关操作

c)         自定义model就是一个空壳,没有必要实例化自定义model

d)        $obj = M(‘数据表标志’);  实例化Model对象,实际操作具体的数据表

$obj = D(标志);

$obj = D();

$obj = M(标志);

$obj = M();

D()和M()方法的区别:

前者是tp3.1.3里边对new操作的简化方法;

后者在使用就是实例化Model父类

       两者都在函数库文件定义ThinkPHP/Common/functions.php

快捷的M方法

$car = M("car");

var_dump($car);

注意:如果没有对应的model模型文件类,也可以直接实例化model对象进行操作

D()和M()方法都可以实例化操作一个没有具体model模型类文件的数据表。

 

public function ShowAll()
    {
        //Model:数据库中每张表对应一个模型,模型其实就是一个类
        //模型是类
        //类名是表名,类里面的成员变量是列名
        //把一张表对应为一个类,其中一条数据对应一个对象
        //如果我们对该表的模型没有特殊操作的话可以不用建立该模型 
        
        //查询car表(模型没有建立),,new时必须要建立模型
        
        //实例化MODEL类
        //$car = new \Admin\Model\CarModel();//根命名空间Admin
        //var_dump($car);//要求创建模型文件(子类对象里面的)
        
        //快捷的D方法
        //$car = D("car");
        //var_dump($car);
        
        //快捷的M方法
        //$car = M("car");
        //var_dump($car);
        
    }    

 

2. 数据查询 

select()是数据模型的一个指定方法,可以获得数据表的数据信息

       返回一个二维数组信息,当前数据表的全部数据信息

$obj = D();  创建对象

$obj -> select();  查询数据

select  字段,字段  from  表名  where 条件  group 字段 having  条件   order 排序  limit 限制条数;

查询常使用的方法:

$obj ->field(字段,字段);  查询指定字段

$obj ->table(数据表);   设置具体操作数据表

$obj ->where(参数);   参数就是正常sql语句where后边的条件信息

例如:( “goods_price >100 and  goods_name like ‘三%’”)

$obj ->group(字段);  根据字段进行分组查询

$obj ->having(参数条件);  having 条件设置

$obj ->order(‘price  desc/asc’)  排序查询

$obj ->limit([偏移量,]条数)  限制查询的条数

$obj -> page()   分页类Page可以自动计算出每个分页的limit参数

    例如:$obj->page("1,10")->select(); // 查询第一页数据

       $obj->page("2,10")->select(); // 查询第二页数据

$obj ->find()如果我们查询的结果只有一个信息,为了使用方便我们会希望返回一个一维数组,这时候可使用find()方法

相关聚合函数: count()  sum()   avg()   max()   min()

       以上聚合函数是最后被调用的方法

       以上方法可以结合具体条件方法使用

       例如:$goods -> where(‘goods_price >1000’)->count(); 大于1000元的商品的总数目

连贯操作返回是对象,而select是不可以的要写在最后面

老师讲课内容:

public function ShowAll()
    {    
        $info = M("Info");
        //返回所有数据二维数组
        var_dump($info->select());//把数据库里面的都变成小写的,以后都要小写这样会好
        
        //根据某些条件的查询
        //$attr = $info->where("nation='n002'")->select();//where方法可以添加查询条件
        
        //$attr = $info->table("car")->select();//table操作可以切换操作表
        
        //$attr = $info->field("name,nation")->select();//field可以指定查询的字段,指定查询
        
        //$attr = $info->order("birthday desc,sex asc")->select();//排序
        
        //分页查询,如果1个参数时是取前n条数据,2个时是跳过多少取多少
        //$attr = $info->limit(2,3)->select();//需要计算
        
        //取第n页的m条数据
        //$attr = $info->page(1,2)->select();
        
        //分组查询
        //$attr = $info->field("nation,count(*)")->group("nation")->select();
        
        //select * from Info join Nation on 条件   select * from info join nation on info.Nation = nation.Code
        
        //连接查询没有记下
        //$attr = $info->join("nation on info.Nation = nation.Code")->select();
        
        //$attr = $car->join("Brand on Car.Brand = Brand.Brand_Code")->select();//连接查询
        
        //$attr = $info->distinct(true)->field('nation')->select();
        
        //$attr = $info->find('p001');//可以查一条数据,根据主键值,不写主键值时默认返回第一条
        //$attr = $info->select('p001,p002');//根据主键值查询,返回二维数组,可以查询多条
        //var_dump($attr);
        
        //聚合函数(求和,平均,最大,最小,总数)
        //$attr = $info->count();
        //$attr = $info->min("birthday");
        
        //$car = M("car");//快捷方法不需要建立模型
        //var_dump($car);
        //$attr = $car->where("Name like '%奥迪%'")->order("Powers desc")->select();
        
        //var_dump($attr);
}

自己在Admin模块下的练习:以car表为例

        $car = M("car");
        //$attr = $car->select();//返回关联的二维数组,把数据库里面的都变成小写的,以后都要小写这样会好,但是添加数据要求完全一致
        
        //根据某些条件的查询(where连贯操作返回是对象,而select是不可以的要写在最后面)
        //$attr = $car->where("brand='b002'")->select();//where方法可以添加查询条件
        
        //table操作可以切换操作表
        //$attr = $car->table("Nation")->select();
        
        //field可以指定查询的字段,指定查询
        //$attr = $car->field("name,code")->select();
        
        //order排序
        //$attr = $car->order("oil desc, powers asc")->select();
        
        //分页查询,如果1个参数时是取前n条数据,2个时是跳过多少取多少
        //$attr = $car->limit(2,2)->select();
        
        //取第n页的m条数据
        //$attr = $car->page(3,5)->select();
        
        //group分组查询
        //$attr = $car->field("brand,count(*)")->group("brand")->select();
        
        //select * from Info join Nation on 条件   
        //select * from info join nation on info.Nation = nation.Code
        //join连接查询
        //$attr = $car->join("brand on car.brand = brand.brand_code")->select();
        
        //distinct去重
        //$attr = $car->distinct(true)->field("brand")->select();
        
        //find方法,根据主键可以取一条数据
        //$attr = $car->find("c001");//一维数组
        //$attr = $car->select("c001,c002");//二维数组
        
        //模糊查询
        //$attr = $car->where("name like '%奥迪%'")->order("powers desc")->select();

        //聚合函数
        //$attr = $car->count();//查询总条数
        $attr = $car->max("price");        
        $attr = $car->min("price");
        $attr = $car->sum("price");
        $attr = $car->avg("price");

        var_dump($attr);
View Code

相关文章: