thinkphp笔记二
admin
2023-05-22 13:22:39
0

1.控制器创建原则:

基本原则:根据功能,原则上一个功能项对应控制器中的一个动作

可能多个功能共享一个动作添加和修改比较接近,根据条件来选择添加还是修改

可能需要辅助方法完成一个动作

基本原则:根据功能,按照数据表结构进行划分控制器类

基本原则,项目包含多个不同用户角色的功能,如果不区分模块,可能会导致控制器重名,影响代码阅读,按照不同角色功能划分不同模块

是否有必要创建模块

控制器文件如何分类

控制器动作如何制定

2.视图文件的架设

       静态资源文件

              组成:图片 css JavaScript

              文件目录:public/子目录

       布局文件

              组成:页面头部,尾部,面包屑,正文

              目录:模块目录/view/

       视图文件

              一般原则:控制器中的一个方法对应一个视图文件

3.数据库模型基本使用

       连接数据库

              使用配置文件

              传入参数形式

       实例化数据库操作对象

              使用new Model()创建

              使用M()函数创建

       执行SQL原生查询

              Query() 方法

              Dump()函数测试结果

4.数据库基本操作

    字符串查询

        $table = M('tableName');

        $results = $table -> where('id > 3')->select();

    关联数组查询

        $condition['id'] = array('neq','3');

        $condition['uid'] = array('neq','1');

        $results = $table -> where($conditon) -> select();

    魔术方法查询

        $results = $table -> getById('1');//只能获取指定条件的第一条记录

    统计数据

        $count = $table -> count();//统计表中数据

        $count = $table ->max('id');

    limit

        $limit = $table -> limit(3) -> select();//前三条记录

        $limit = $table -> limit(2,2) -> select();//第三条记录开始查询两个

    order排序

        $order = $table -> order('id desc') ->select();//id降序排列

       创建和插入数据

              Create():在内存中创建数据,不写入数据库,过滤掉无效字段(表中没有的字段)

工作流程:1.获取数据(POST参数或者用户传入的数据)2.进行数据校验3.把传入的数据放到当前对象的data属性中

参数:1.若没有参数,表示插入$_POST[]数据2.可以传入关联数组数据3.可以传入标准对象数据

      Model::MODEL_INSERT     Model::MODELUPDATE

返回值:创建好的数据对象组

可以直接为Model对象添加属性或修改属性,以实现添加内存数据的目的

              Data():基本同create(),不进行数据校验

              Add():把内存中的数据插入到表中

1没有参数,直接使用MODEL对象的data属性(create()data()方法返回)

2附加条件

3是否覆盖标识(是否覆盖已经存在的主键数据)

4可以直接过滤掉数据表中不存在的字段

5直接使用add(),不会进行数据校验

//写入数据前进行校验

                if($this -> create($data))

{

return $this-> add();

}



       读取数据

              Select():1不传参查询表中所有记录2.传一个参数select(1)主键为1的记录3.select(1,3,5)返回主键为135的记录4传入false返回当前查询的语句

              Find():查询一条记录,不传入参数获取第一条记录,find(1)返回主键为1的记录

              getField():只传入一个参数,获取第一条记录的值

              where条件:1传入字符串 2传入数组或者对象,可以过滤掉非法字符。

              limit()limit(1)1.获取指定条件的1条记录 limit(2,2)获取从第一个参数开始的2条记录

              order():按照指定字段对记录进行排序,单字段排序和多字段排序

 

       删除数据:删除成功返回删除的个数,失败返回false

              $db = M(‘msgs’);

              $results = $db –> where(‘id = 1’)-> delete();//删除id为1的记录

              $results = $db –> where(‘1’)-> delete();//删除所有记录

              $results = $db -> delete();//不传参数返回false

              $results = $db -> delete('1,3,5')//删除主键为135的记录

       修改数据:更新指定条件的数据

       $data['name'] = "张三";

       $results = $db -> where('id = 1') -> save($data)

              若传参,表示更新后要满足的效果

              若不传参,表示使用当前数据表操作对象data属性中的记录

更新条件,可以使用where显示指明更新条件,若无更新条件,save()参数中的记录包含主键,更新主键对应的记录,否则不更新。更新成功返回更新的记录数,更新失败,返回false

setField:更新个别字段的值

setInc setDec

5.模型操作类

       作用:MVC分离相对彻底,逻辑清晰,适合分工合作,方便实现一些特性的效果(过滤,验证,自动完成)

       创建模型类:

              文件名:数据表名Model.class.php

              目录:模块/model/目录

              类名:class 数据表名Model  extends Model

              可选属性:tablePrefixtableName trueTableName dbName _validate(自动验证规则) _auto(自动完成规则)

              添加方法用来实现业务逻辑

              使用:new方法  D()函数

6.ActivRecord

       表映射到类,记录映射到对象

       ORM模型:对象关系映射模型


7.session处理

    

    初始化:无需手动调用,除非有特殊需要的时候

    设置值:session(键,值);

    获取值:session(键);

    删除值:session(键,null);

    判断值是否存在:session(?键);

    模板中使用session:判断session状态 输出session值   

    

    控制器中输出session  dump($_SESSION);

    

    present标签用于判断某个变量是否已经定义 

   
   欢迎您,{$Think.session.loginedUser}! | 注销
   
   您尚未登录(登录) 
   还没有用户名(注册)
   
   
8.分页 
    页面跳转 
    
    分页本质是:limit查询 sql语句:select * from msg offset size//从offset开始的size条记录  分页链接 /home/msg/index/page/1

             

 

 


相关内容

热门资讯

普京访华团规模会比特朗普的大吗... 在美国总统特朗普结束访华后,俄罗斯总统普京也将于5月19日至20日访华。俄方否认二者之间存在联系,同...
直击柳州地震震中太阳村镇:搜救... 5月18日0时21分,广西柳州市柳南区发生5.2级地震,震源深度8千米。凌晨时分,骤然地动山摇,打破...
开放式耳机到底能进化到哪一步?... 我发现,现在很多人买耳机,理由越来越朴素了。 不是为了什么 HiFi 音质,也不是为了图个清静,纯粹...
格陵兰岛自治政府总理见美特使,... 新华社奥斯陆5月18日电(记者张玉亮)哥本哈根消息:丹麦海外领地格陵兰岛自治政府总理延斯-弗雷德里克...
特朗普连发15张图分享“中国记... 据国是直通车,空军一号刚刚落地美国,特朗普就迫不及待地在社交媒体上分享了自己的“中国记忆”——连发1...
湖北宣恩强降雨致3人死亡、4人... 记者从湖北省恩施州宣恩县防汛抗旱指挥部了解到,5月17日至18日,湖北省恩施州宣恩县沙道沟镇白水河村...
这家意大利公司想让机械臂飞上太... 3D 打印是什么?你的直觉告诉你,是一台不足鞋盒大小的设备,吐出细如发丝的塑料,耗费数小时,堆叠成一...
2026荣耀性价比之王!实测半... 大家好,我是小杨,经过我线下门店实测、参数横向对比、用户口碑调研后,筛选出三款宝藏机型 —— 荣耀 ...
筑牢数字生命线,科士达以智慧能... 5月17日世界电信和信息社会日,2026 年国际电信联盟(ITU)以 “数字生命线:在互联世界中加强...
特朗普称将推迟对伊朗发动军事打... 当地时间5月18日,美国总统特朗普在社交平台“真实社交”发文表示,在卡塔尔、沙特阿拉伯、阿联酋领导人...