当前位置: 首页 > 工具软件 > vaeThink > 使用案例 >

vaethink使用日记001

能修谨
2023-12-01

前言

在说实话这是我实际项目开发的第一个后台框架,之前学习的时候都是写了原生,安全性自然无可比拟.前天组长让我用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

 类似资料: