thinkphp常见问题
1、数据库查询中execute和query方法的区别
tp中execute()和query()方法都可以在参数里直接输入sql语句。
但是不同的是execute()通常用来执行insert或者update等sql语句,而query常用来执行select等语句。
execute()方法将返回影响的记录数,如果执行sql的select语句的话,返回的结果将是表的总记录数。
2、tp5 Hook的用法
添加钩子:
// 闭包
Hook::add('t123', function (){
echo 123;
});
// 第二个参数是类名,tag是方法名
Hook::add('t123', \test\Hook::class);
// 调用\test\Hook类的test方法 (静态方法)
Hook::add('t123', '\test\Hook::test');
// 调用\test\Hook类的tt方法
Hook::add('t123', [\test\Hook::class, 'tt']);
// 调用\test\Hook类的fuck方法,不存在则调用run方法
Hook::add('fuck', \test\Hook::class);
3、tp5 验证器使用回调进行验证
namespace app\api\validate; use think\Validate; class Test extends Validate
{
public function __construct(array $rules = [], array $message = [], array $field = [])
{
parent::__construct($rules, $message, $field);
$this->rule['test'] = function ($value) {
return $this->message['test'];
};
} protected $message = [
'test' => 'just a test hahahhhhh',
];
}
在构造函数里面添加rule的原因是,类变量$rule里面的值不可以传闭包进行初始化。
闭包返回值:返回true表示验证成功,或者返回字符串(错误失败,这时返回的将会是错误信息,使用getError()方法将会获取到该信息)
4、在基础控制器或者_initialize方法里面判断不登陆的时候返回
\think\Response::create(json())->send() ; die;
5、field方法排除字段
field(['id','status','sort_index','create_time','update_time'], true)
第一个参数是要排除的字段数组,第二个参数传true代表是排除的字段。
6、thinkphp模型数据分页
$category = Category::first();
$apps = $category->apps()->paginate(10);
return view('example', compact('category', 'apps'));
上面的apps是个hasMany关联。
7、读取配置的时候把一个文件加载到config中,文件名为配置的key
Config::load($filename, pathinfo($file, PATHINFO_FILENAME));
8、关联模型更新的时候,提示主键id找不到的错误
比如Order表,里面保存了用户id,定义了user关联,但是使用$order->user->save()的时候提示Order的属性id不存在,
这是因为在Order模型的$field中没有写入主键"id",导致查询出来的order没有带id。
9、使用union同时分页的解决方法之一:使用union创建视图
thinkphp常见问题的更多相关文章
- thinkphp 常见问题
0.写在最前面的不断更新 (1)trace不起作用 A:必须要输出到模板,才会有trace信息 (2)提示“您浏览的页面暂时发生了错误!请稍后再试-” A:检查控制器(看看能进到控制器没有,设断点输出 ...
- ThinkPHP框架搭建及常见问题(Apache或MySQL无法启动)----简单的初体验
有一定基础的人勿进,这篇讲的只是零基础入门,都是我刚接触以及我所了解到的人刚开始有疑惑的地方,具体框架介绍会在后面的博客中介绍 这一篇只是为了一个简单的页面显示而介绍的方法,不涉及代码,开发环境,所以 ...
- ThinkPhp 3.2 常见问题与注意事项
1 命名空间声明必须写在脚本的最前面 如果运行PHP脚本后出现如下错误: Namespace declaration statement has to be the very first statem ...
- 【Thinkphp】引入第三方类库常见问题
TP3.2在添加第三方sdk的时候,文件放在ThinkPHP/Library/Org文件夹下可独立创建文件夹(官方文档有其他思路)需对文件做以下修改. 1.第一应该修改文件的名称(下载的sdk一般是 ...
- thinkphp 5 一些常见问题
## 请求缓存 request_cache
- 制作类似ThinkPHP框架中的PATHINFO模式功能
一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...
- 在 SAE 上部署 ThinkPHP 5.0 RC4
缘起 SAE 和其他的平台有些不同,不能在服务器上运行 Composer 来安装各种包,必须把源码都提交上去.一般的做法,可能是直接把源码的所有文件复制到目录中,添加到版本库.不过,这样就失去了与上游 ...
- ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案
好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...
- ThinkPHP 模板substr的截取字符串函数
ThinkPHP 模板substr的截取字符串函数在Common/function.php加上以下代码 /** ** 截取中文字符串 **/ function msubstr($str, $start ...
随机推荐
- RyuBook1.0案例一:Switching Hub项目源码分析
开发目标 实现一个带MAC地址学习功能的二层交换机 Openflow交换机与Openflow控制器安全通道建立步骤 switch and controller建立未加密TCP连接或者加密的TLS连接 ...
- HPUX 配置zabbix开机自动启动
1. 在/etc/rc.config.d目录下创建zabbixd文件,并增加以下内容: #!/sbin/sh # v1.0 ?zabbixd startup/kill config ...
- vps搭建个人网盘不二之选—kodexplorer介绍,包含安装步骤
之前给大家介绍过seafile.h5ai等网盘系统,今天给大家介绍下kodexplorer网盘系统.Kodexplorer,也叫芒果云.可道云.kodcloud,总之名字改了不少.但其本身作为一个网盘 ...
- JSON.stringify处理对象时的问题
1. JSON.stringify({entry_key: 'test', entry_detail: undefined}) 结果 为 "{"entry_key": & ...
- django的htpp请求之WSGIRequest
WSGIRequest对象 Django在接收到http请求之后,会根据http请求携带的参数以及报文信息创建一个WSGIRequest对象,并且作为视图函数第一个参数传给视图函数.这个参数就是dja ...
- Python中用字符串导入module
在Python中,无法通过字符串来导入一个module文件: import "string" # Error x = "string" import x # 不 ...
- Scrum立会报告+燃尽图(十一月二十一日总第二十九次):β阶段第二周分配任务
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2284 项目地址:https://git.coding.net/zhang ...
- Scrum立会报告+燃尽图(十一月二十日总第二十八次):功能开发与纪录版本控制报告
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2284 项目地址:https://git.coding.net/zhang ...
- html、JSP运行原理
HTML运行原理 1.本地运行 所谓本地运行就是直接用 浏览器打开 2.远程访问的原理示意图: 何为协议?计算机互相通信(网络)的规则.常见的协议有 http .smtp. ftp.pop等 ...
- vue cli3 配置postcss
1.安装postcss-import,postcss-cssnext 包 2.修改package.json 将postcss响应的内容替换为 "postcss": { " ...