第十四章:第19节thinkPHP框架——操作数据库(六)模型对象详解——新增数据

更新于:2018-01-24 16:29:24

通过前面的学习,了解到定义的模型类继承的父类可以为Model抽象类、Query数据库操作类,甚至都可以不继承父类。


有朋友疑问了:不继承父类!那定义的模型类什么操作数据库的方法都没有,写这类有什么用?


楠神的回答:每一个表都要写一个模型类,主要是让程序遵循MVC设计模式,对每一个数据表做增删查改操作时,都有一个唯一的入口文件。


大家不要这样理解:我们写的模型类是因为继承了Model类、使用了Model类的方法才变得有用,这是错误的理解!我们定义模型类不是因为要去使用Model类的方法才去定义的,所以要明白这点。


就算模型类不继承任何父类,我们依然可以使用一些函数、其他方法让每一个模型类起到“入口”的作用!


既然官方已为我们写好了一个模型父类——Model类,这两节简单讲解下,让模型类继承Model类,都有哪些额外的用处方便我们编程。至于大家以后在编程中愿不愿意用,取决于自己。楠神不爱用Model类的方法,只相信和喜欢自己写的代码,所以都是让模型类继承Query类。


除了前面的select、insert、update、delete这些方法,继承了Model类,会有一些其他方法也可以实现增删查改。


1)新增


使用save方法可以新增数据。直接演示:


1.png

1.png


详解:


楠神演示了三种使用save新增数据的方式。也就是新增的数据可以以数组的方式作为save方法的参数,也可以把新增的数据先设置到模型对象里,然后用save方法保存。


我们定义的模型类继承了Model类以后,经过Model类的一番处理,可以把数据表的每个字段当成这个模型对象的属性。


注意的两个地方:


1.png


额外说明:


代码中每次user模型对象都是依靠model("User")获得,有朋友会不会觉得每多一行代码就会多实例化一个user对象。答案当然不是的!大家看下model函数的代码就会知道,使用了单例模式。


拓展:


1.png


查看下allowField方法的代码:


1.png


如果直接在user模型类里对字段做限制,可直接为field属性赋值。


1.png


本节学习代码》》》