模型的常用操作

模型的种类

 基础模型

通过M()获得的模型,还可以通过 new Model() 来获得基础模型

通过M()函数获得的模型,多次实例化模型的时候,获得的是同一个模型,

new Model() 方法获得的模型,多次实例化获得的是不同的模型对象

      所以,我们建议使用 M()函数获得模型,好处是减少开销

 

空模型

     (1)这个模型不与任何数据表相关,作用是执行一些不与数据表相关的操作,例       如统计当前数据库有几张表?

     作用是,和操作的具体的数据表没有关系,通常用于查询数据库有多少数据表,或   者查询有多少数据库

    空模型获得方式:L

    M()函数获得,只是没有参数

    或者使用 new Model()  获得,没有参数

    要查询mysql_test数据库,有多少数据表

    空模型通常执行 query()  或者 execute() 函数

    query()和excute()方法区别:

    query()获得的是查询的结果

    execute()获得的是受影响的行数

自定义模型

     (1)模型的定义,命名方式:

       去掉表前缀的数据表名称,采用驼峰法,首字母大写,后面加上Model.class.php

    (2)关于数据表名称的属性的定义:

        tableName

        trueTableName

        例如在数据库有一个goods表,而我们定义的模型类是GoodModel,按照约定这  个模型名称应该是Good,对应的表应该是good,这时我们就需要修改模型的属性来改变默认的规则

通过在自定义模型类里面增加一个属性,$tableName = ‘真实的表名’

如何使用自定义的模型?

(1)自定义模型的时候,要让自定义的模型继承自 Model类

classGoodModel extends Model

(2)通过D()函数实例化自定义的模型

D()函数的用法:如果有参数,实例化的是自定义的模型类,如果没有参数,实例化的是基类模型

 

(1)

(2)系统默认模型名 对应一张数据表 例如 GoodsModel  对应 Gooda 表,

但是例外,模型名和数据表名称并不完全一样,例如 GoodsModel  但是数据库只有Good

如果出现这种特殊情况,我们通过在模型类里面定义 $tableNmae属性,告诉系统真实的表名是谁

(3)如何使用自定义模型

D()函数的用法:如果有参数,实例化的是自定义的模型类,如果没有参数,实例化的是基类模型

模型字段操作

(1)TP框架每次获得模型的时候,会去数据库中确定数据表的结构

(2)如果开启的是部署模式,会将这个表的结构缓存起来,因为一旦项目上线,很少再去修改表的结构,这样提高访问速度

(3)在实际开发中,为了最快速的获得当前模型表的结构,将表的结构定义到这个模型中,字段名是$fields

数据主键

ThinkPHP的默认约定每个数据表的主键名采用统一的id作为标识,并且是自动增长类型的。

系统会自动识别当前操作的数据表的字段信息和主键名称,所以即使你的主键不是id,也无需进行额外的设置,系统会自动识别

 

连贯操作

连贯操作是什么呢?

我们可以通过select()查询出所有的数据,但是有时候我们不需要所有的数据,我们可能通过一些条件拼接一个sql语句,然后去查询

例如,现在我需要查询出价格为3500 的商品名称

模型的连贯操作

where(‘条件字符串’)定义查询或更新的条件

$good_name=$good_model->where('shop_price=3500')->select();

field(‘字段列表’)  需要查询的字段,如果为true显示数据表的所有字段

$good_name=$good_model->field(true)->where('shop_price=3500')->select();

order()对操作结果排序

$list= $good_model->order('shop_pricedesc')->select();

limit()定义查询结果的限制

$list= $good_model->limit(3)->order('shop_pricedesc')->select();

group()分组查询

$list =$good_model->group('shop_price')->select();

having()当前查询结果的条件

$list=$good_model->having('goods_id=11')->select();

table()定义要操作的数据表名称,

$list=$good_model->table('stu')->field('name')->select();

union()联合查询,连接的是两个select语句

$list=$good_model->field('goods_name')->union('selectname from stu')->select();

distinct()去除重复查询

$list=$good_model->distinct(true)->field('shop_price')->select();

join()连接查询:默认为左连接。

 

查询语言:

ThinkPHP支持直接使用字符串作为查询条件,但是推荐使用关联数组或对象作为查询条件,这样会更加安全

(1) 使用字符串作为查询条件

$list=$good_model->where('shop_price=3500')->select();

(2) 使用数组作为查询条件

$cond[‘查询条件’] = array(‘关系’,’值’) 表示出来值与字段之间的关系

$cond['shop_price'] = array('eq','3500');

  $list=$good_model->where($cond)->select();

模糊匹配:$cond['goods_name']=array('like','ip%');

$list=$good_model->where($cond)->select();

       Between区间查询:$cond['goods_id']=array('in','1,3,5,7,9');

                          $cond['shop_price']=array('between',array(3000-5000));

统计查询

$sum=$good_model->sum('shop_price');

 $avg=$good_model->avg('shop_price');

 $count=$good_model->count('shop_price');

  var_dump($count);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值