使用模型对象对数据表做增删查改,也可以使用数据库对象的方法(select、insert、update、delete),这节给大家演示下模型对象与数据库对象的关系。
1)
楠神打印下,db函数返回的数据库对象到底是哪个类的对象实例?
可看出楠神所说的数据库对象其实就是Query类的对象实例。
在Query类中可以看到定义的这几个方法实体(select、insert、update、delete)。
2)
我们的User模型类继承了下面的Model抽象类
Model抽象类没有抽象方法,其目的就是不让直接被实例化。类中也没有定义这几个方法实体(select、insert、update、delete)。
在Model类中定义了魔术方法“__call”,像“field、where、select”方法没有方法实体,则会执行这个魔术方法。
打印下$query、$method这两个变量
$query就是个数据库对象。看到这一步,我们应该能明白了为什么数据库对象的方法在模型对象中也可以用。
再说下楠神为什么建议大家用模型对象操作数据库?
大家可看到Model抽象类中定义了很多方法,这些方法可以帮助我们更好地做好数据验证、处理,节省了我们自己写代码的一些时间。
如果有朋友对Model抽象类的方法不感兴趣,可以让自定义的模型类继承Query类,一样可以让模型对象起到验证和处理数据的作用。