thisnkphp在实例化模型的时候必须连接数据库吗?增删改查操作应该在模型中啊,怎么现在跑到控制器中了? 30
1、为什么thinkphp实例化模型和原生的MVC思想差异那么大?2、为什么thinkphp中必须一个模型类对应一个数据表,这样好不灵活,我好不习惯啊。。。3、一般都是在...
1、为什么thinkphp实例化模型和原生的MVC思想差异那么大?
2、为什么thinkphp中必须一个模型类对应一个数据表,这样好不灵活,我好不习惯啊。。。
3、一般都是在控制器中对模型进行实例化吧?而实例化后才能对数据库进行增删改查操作,所以现在所有的操作都跑到控制器中完成了,那还是什么MVC啊?为啥不能将数据库操作放在模型中?
谢谢
第二条问题中,就是说假如我只是想在模型中对一些数据进行简单的判断,不需要读取数据库中的数据,那么在thinkphp中还必须读取数据库是吗?为什么我直接不带参数实例化模型的时候都会报错,说SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.common' doesn't exist
错误位置FILE: E:\wamp\www\thinkphp\ThinkPHP\Library\Think\Db\Driver.class.php LINE: 169 展开
2、为什么thinkphp中必须一个模型类对应一个数据表,这样好不灵活,我好不习惯啊。。。
3、一般都是在控制器中对模型进行实例化吧?而实例化后才能对数据库进行增删改查操作,所以现在所有的操作都跑到控制器中完成了,那还是什么MVC啊?为啥不能将数据库操作放在模型中?
谢谢
第二条问题中,就是说假如我只是想在模型中对一些数据进行简单的判断,不需要读取数据库中的数据,那么在thinkphp中还必须读取数据库是吗?为什么我直接不带参数实例化模型的时候都会报错,说SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.common' doesn't exist
错误位置FILE: E:\wamp\www\thinkphp\ThinkPHP\Library\Think\Db\Driver.class.php LINE: 169 展开
1个回答
2015-09-01
展开全部
thinkPHP 只是一个框架而已,由MVC结构、一些实用的组件、类库等构成,你应该把他当作工具来使用。它提供的功能如果能满足你的需求,你就使用;不能的话,你可以自己添加或创造,你也可以再换一个适合你的框架(YII、CI、Laravel等等)。
thinkPHP框架还是很灵活的,MVC结构还算合理(只是M层更多的偏向DAO,应该是借鉴了许多JAVA框架的特点)。如果你想学习thinkPHP框架,建议你多参考官方的文档以及分析框架的源码。
如果只是想在模型中对一些数据进行简单的判断,不需要读取数据库中的数据,可以使用thinkPHP的虚拟模型:
1、继承Model类
namespace Home\Model;
Class UserModel extends \Think\Model {
Protected $autoCheckFields = false;
}
设置autoCheckFields属性为false后,就会关闭字段信息的自动检测,因为ThinkPHP采用的是惰性数据库连接,只要你不进行数据库查询操作,是不会连接数据库的。
2、不继承Model类
namespace Home\Model;
Class UserModel {
}
这种方式下面自定义模型类就是一个单纯的业务逻辑类,不能再使用模型的CURD操作方法,但是可以实例化其他的模型类进行相关操作,也可以在需要的时候直接实例化Db类进行数据库操作。
更多关于thinkPHP的模型相关内容,请参考官方参考手册的《模型》小节。
网易云信
2023-12-06 广告
2023-12-06 广告
UIkit是一套轻量级、模块化且易于使用的开源UI组件库,由YOOtheme团队开发。它提供了丰富的界面元素,包括按钮、表单、表格、对话框、滑块、下拉菜单、选项卡等等,适用于各种类型的网站和应用程序。UIkit还支持响应式设计,可以根据不同...
点击进入详情页
本回答由网易云信提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询