搜索
博主信息
博文 4
粉丝 0
评论 1
访问量 6907
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
ThinkPHP5.1新手笔记(五):【核心知识】模型
一嗔
原创
499人浏览过

        1、模型类通常完成实际的业务逻辑和数据封装,并返回和格式无关的数据。模型类并不一定要访问数据库,而且在5.1的架构设计中,只有进行实际的数据库查询操作的时候,才会进行数据库的连接,是真正的惰性连接。


        2、ThinkPHP的模型层支持多层设计,可以对模型层进行更细化的设计和分工,例如把模型层分为逻辑层/服务层/事件层等等。


        3、大多数情况下,不同模块的模型是不需要独立的,因此可以统一在 common 模块下面定义模型(Validate也是)。


        4、模型会自动对应数据表,模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,并且首字母大写,例如:Uesr对应think_user表,UserType对应think_user_type表。


        5、一般继承基类模型use think\Model。


        6、默认主键为 id,如果表中没有使用 id 作为主键名,需要在模型中设置属性,如:protected $pk='uid'。5.1中模型不会自动获取主键名称,必须设置pk属性。


        7、模型操作和数据库操作的一个显著区别是模型支持包括获取器、修改器、自动完成在内的一系列自动化操作和事件,简化了数据的存取操作。


        8、模型同样支持初始化,与控制器的初始化不同的是,模型的初始化是定义 Model 的 init 方法,如:protected static function init(){ }。模型初始化方法通常用于注册模型的事件操作。init 必须是静态方法,并且只在第一次实例化的时候执行。


        9、tp建议:新增数据的最佳实践原则:使用 create 方法新增数据,使用 saveAll 批量新增数据。喜欢用$this->...。更新和删除最好先查询再操作。


            查询:$this->where->find/select( );

            新增:$this->allowField(true)->save( );

            更新:$info=$this->where->find( ); $result=$info->save( );  //更新和新增都是使用save方法

            删除:$info=$this->where->find( ); $result=$info->delete( );


        10、模型支持自动写入创建和更新的时间戳字段(默认关闭),有两种方式配置支持。第一种方式是全局开启,在数据库配置文件中进行设置:'auto_timestamp' => true;第二种是在需要的模型类里面单独开启:protected $autoWriteTimestamp = true。个人喜欢第二种。一旦配置开启的话,会自动写入 create_time 和 update_time 两个字段的值,默认为整型。时间字段的自动写入仅针对模型的写入方法,如果使用数据库的更新或者写入方法则无效。


        11、在实际项目中,对数据频繁使用删除操作会导致性能问题,软删除的作用就是把数据加上删除标记,而不是真正的删除,同时也便于需要的时候进行数据的恢复。在模型类中定义 use SoftDelete; 对应表中的delete_time。【注意】:表中delete_time字段默认值必须为null,因为开启软删除后,查询语句变为SELECT * FROM `tp_book` WHERE `tp_book`.`delete_time` IS NULL。


        12、数据查询有问题,第一时间看SQL语句。


        13、模型关联:


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学