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 操作(注:非查询操作,无返回数据集),返回影响的记录数。

  • 相关阅读:
    FZU 2150 Fire Game
    POJ 3414 Pots
    POJ 3087 Shuffle'm Up
    POJ 3126 Prime Path
    POJ 1426 Find The Multiple
    POJ 3278 Catch That Cow
    字符数组
    HDU 1238 Substing
    欧几里德和扩展欧几里德详解 以及例题CodeForces 7C
    Codeforces 591B Rebranding
  • 原文地址:https://www.cnblogs.com/macliu/p/5181966.html
Copyright © 2011-2022 走看看