在说实话这是我实际项目开发的第一个后台框架,之前学习的时候都是写了原生,安全性自然无可比拟.前天组长让我用vaethink搭建一个后台的框架然后用的是vaethink 。这是一个layui+thinkPHP5开发的轻量级框架。作者提供的文档比较简短,新手使用相当于排雷了
对于模型(MODEl) 我们常常用自动时间戳这样的功能来简化代码,那么来说我们基本就是在thinkphp开启自动时间戳,然后
// An highlighted block
$list = [
['name'=>'thinkphp','email'=>'thinkphp@qq.com'],
['name'=>'onethink','email'=>'onethink@qq.com']
];
model('user')->save($list)
vaethink给出的方法如下
$uid = \think\loader::model('Admin')->strict(false)->field(true)->insertGetId($param);
这里就引出一个关键:用Db类来进行CURD操作是无效的,需要用模型的方式操作数据库,时间戳才能自动写入成功。
因此只能用save()方法,insert和update方法是无效的
我习惯相信官方所以当时就是一顿奇怪,改了半天
看一下tp5的官方手册 里面会说这个strict()是用在否严格检查字段名,注意这里是Db
Db::name('user')
->strict(false)
->insert($data)
你可能已经注意到vaethink的插入语句开头是
\think\loader::model('Admin')
没毛病TP官方在文档里都说了这是加载模型,就在这里我当时开始怀疑是否是SQL语句出了什么毛病
就随便改一下
$uid = \think\loader::model('Admin')->strict(false)->field(true)->idddd($param);
自然是不可能有idddd这个方法,然后就报错了
报错翻译过来就是 Db里面没有这个idddd方法
???
我不是操作模型吗,怎么是你Db报错?
没错,就是这个strict(),其实反过来想也容易理解,因为既然他是DB的方法能运行,又没有报错说明他是DB在调用
从而反过来说明了为什么时间戳没有写入,因为这是model的能力,你Db凑什么热闹.
1 熟悉函数(方法)非常重要,不仅知道参数,参数格式,输出结果和格式,还要知道谁能使用他谁不能
2 不要产生惯性思维,例如 看见model就是使用了模型,未必
3 明天写一下 vaethink的隐藏/模块/控制器 的URL