zoukankan      html  css  js  c++  java
  • thinkphp3.2之模型(M层)

    最近学习了php框架thinkphp,回头总结了些学习心得知识,希望对大家有帮助

    1、模型的概念:

         模型(Model)是 ThinkPHP 中一个很重要的概念,粗略的理解模型就是与数据库交互信息进行curd操作的过程,与之有关的还包括模型的定义与实例化。

    2、模型的实例化:

      1)、实例化基础模型 (无需正式的M层存在,是thinkphp提供好的,模型的基类,实现了基本的CURD)

       1、$对象 = new  Model("去掉前缀的表名")

    快捷创建:M

       2、$对象 = M("去掉前缀的表名") 

    2)、实例化自定义模型 (实际通过自己在项目目录/Lib/model/)

      (1)模型的命名和命名控制器的命名相似  “表名”+model.class.php

      (2)创建模型类时必须继承Model这个基类

      (3)模型类被本身可以不定义方法或者属性

          (4)创建模型类对象

             1、$对象名 = new  XXXModel();

    快捷创建:D   用D创建的好处是,不会每次都创建,会自动的判断如果有该类的对象,那么就不会在创建,会返回有的对象

             2、$对象名 = D("XXX");

       (5) 实例化多个模型(实例化一个自定义模型的时候同时附带着实例化另一个模型)

       $对象名 = new  XXXModel("其它模型的名称(‘User’)");

       注意:此时查询的数据库数据是来自User表的数据

            $对象名 = M("XXXModel:USer");

       (6) 实例化空模型(在实例化的时候不知道实例化那个模型,直接实例化一个空的模型)

       $对象名 =  new Model();

        该对象可以使用原始的sql语句    $对象名->query(“原生sql语句”);

    3、数据库操作与查询(区间查询,统计查询,定位查询,原生查询)

         1)

    连贯操作中,如where group   order   limit select  等中select一定要在最后一个出现

           

          2)

    1、select()返回值二维数组   等于findAll() 

        建议使用select()

               2、field查询指定字段(连贯方法之一)

      field("username","password")->select();

               3、find()  只能查询一条记录   默认是根据主键进行查询,也有数组条件,但是注意的是该数组条件是连贯操作的表达式:

    如果条件是id的话:可以直接写条件,默认就是id为条件:find(id=2)

    $conditon["order"] ="id  desc";

    $conditon["where"] ="username = 'wjc'";

                4、getByUsername("admin")

       

               5、getfield(字段1,字段2,字段3,spe分隔符)

    用法:

                   getField($field,$sepa=null)

    参数:

                    field(必须):要获取的字段字符串(多个用逗号分隔)

    sepa(可选):字段数据间隔符号,如果是 NULL返回数组为数组。默认为null。

    注:如果field是多个字段,返回数组。数组的索引是第一个字段的值,sepa为null则返回二维数组。

    区间查询:

              $condition["id"]=array(array("gt",12),array("lt",15),"or");

             or是两个查询的关联条件,默认不写为and

              $arr= $user ->where($condition)->select();

    统计查询:

         "统计用户名的个数:". $user->count("username")."<br>";

            "统计最大的id:".$user->max("id")."<br>";

            "统计最小的id:".$user->min("id")."<br>";

            "统计id的和:".$user->sum("id")."<br>";

            "统计id的平均值:".$user->avg("id")."<br>";

    定位查询:

    这些查询需要高级模型的支持:AdvModel

    自定义高级模型:class UserModel  extends AdvModel()

    自动切换为高级模型:switchModel(‘Adv’)->first()

            dump($user->first());

            dump($user->last());

            dump($user->getN(index));1,2,3,4,5,6

    原生查询:

        query() 方法是用于 SQL 查询操作,和select()方法一样返回符合查询条件的数据集。

         execute()方法用于更新和写入数据的 SQL 操作(注:非查询操作,无返回数据集),返回影响的记录数。

  • 相关阅读:
    PIE-SDK For C++栅格数据的金字塔创建
    PIE-SDK For C++栅格数据集的读写
    PIE-SDK For C++栅格数据集的读取
    PIE-SDK For C++内存栅格数据的创建
    【系列文章】数据结构与算法——图
    大小端模式
    几种常见的排序方法(C语言实现)
    WPF——数据绑定(二)绑定方法—绑定本地对象
    WPF——数据绑定(一)什么是数据绑定
    WPF多窗口传参解决方案
  • 原文地址:https://www.cnblogs.com/macliu/p/5181966.html
Copyright © 2011-2022 走看看