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常见问题的更多相关文章

  1. thinkphp 常见问题

    0.写在最前面的不断更新 (1)trace不起作用 A:必须要输出到模板,才会有trace信息 (2)提示“您浏览的页面暂时发生了错误!请稍后再试-” A:检查控制器(看看能进到控制器没有,设断点输出 ...

  2. ThinkPHP框架搭建及常见问题(Apache或MySQL无法启动)----简单的初体验

    有一定基础的人勿进,这篇讲的只是零基础入门,都是我刚接触以及我所了解到的人刚开始有疑惑的地方,具体框架介绍会在后面的博客中介绍 这一篇只是为了一个简单的页面显示而介绍的方法,不涉及代码,开发环境,所以 ...

  3. ThinkPhp 3.2 常见问题与注意事项

    1 命名空间声明必须写在脚本的最前面 如果运行PHP脚本后出现如下错误: Namespace declaration statement has to be the very first statem ...

  4. 【Thinkphp】引入第三方类库常见问题

    TP3.2在添加第三方sdk的时候,文件放在ThinkPHP/Library/Org文件夹下可独立创建文件夹(官方文档有其他思路)需对文件做以下修改. 1.第一应该修改文件的名称(下载的sdk一般是 ...

  5. thinkphp 5 一些常见问题

    ##  请求缓存 request_cache        

  6. 制作类似ThinkPHP框架中的PATHINFO模式功能

    一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...

  7. 在 SAE 上部署 ThinkPHP 5.0 RC4

    缘起 SAE 和其他的平台有些不同,不能在服务器上运行 Composer 来安装各种包,必须把源码都提交上去.一般的做法,可能是直接把源码的所有文件复制到目录中,添加到版本库.不过,这样就失去了与上游 ...

  8. ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案

    好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...

  9. ThinkPHP 模板substr的截取字符串函数

    ThinkPHP 模板substr的截取字符串函数在Common/function.php加上以下代码 /** ** 截取中文字符串 **/ function msubstr($str, $start ...

随机推荐

  1. CSP201612-2:工资计算

    引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的"计算机职业资格认证"考试, ...

  2. java使用jacob将office文档转换为PDF格式

    jacob 包下载地址: http://sourceforge.net/projects/jacob-project/ 下载后,将jacob 与 jacob-1.19-x64.dll放到安装jdk目录 ...

  3. Python基础灬文件常用操作

    文件常用操作 文件内建函数和方法 open() :打开文件 read():输入 readline():输入一行 seek():文件内移动 write():输出 close():关闭文件 写文件writ ...

  4. 亮眼的购物季数据,高涨的 Amazon Prime

    依照往年的惯例,亚马逊公布了 2013 购物季的销售数据.据 The Verge 的报道,今年,仅仅网购星期一(Cyber Monday)一天就在全球范围内销售出 3680 万件商品,而去年这一数字为 ...

  5. 梯度下降算法以及其Python实现

    一.梯度下降算法理论知识 我们给出一组房子面积,卧室数目以及对应房价数据,如何从数据中找到房价y与面积x1和卧室数目x2的关系?   为了实现监督学习,我们选择采用自变量x1.x2的线性函数来评估因变 ...

  6. java-HttpGetPost-图片字节流上传

    在java程序开发中经常用到与服务端的交互工作,主要的就是传递相应的参数请求从而获取到对应的结果加以处理 可以使用Get请求与Post请求,注意!这里的Get请求不是通过浏览器界面而是在程序代码中设置 ...

  7. C#高级编程 (第六版) 学习 第四章:继承

    第四章 继承 1,继承的类型 实现继承: 一个类派生于一个基类型,拥有该基类型所有成员字段和函数. 接口继承 一个类型只继承了函数的签名,没有继承任何实现代码.   2,实现继承 class MyDe ...

  8. Jquery mobile div常用属性

    组件 页面 jQuery Mobile 应用了 HTML5 标准的特性,在结构化的页面中完整的页面结构分为 header. content.footer 这三个主要区域. 在 body 中插入内容块: ...

  9. 如何给一块新硬盘安装grub,让它成为一个只有一个内核的系统

    (1)先关机 (2)添加一块硬盘 (3)将硬盘分区,/dev/sdb1为boot分区,/dev/sdb2为swap分区, /dev/sdb3为根分区 (4)调整/dev/sdb2的分区类型为82,指定 ...

  10. hdu 6434 Count (欧拉函数)

    题目链接 Problem Description Multiple query, for each n, you need to get $$$$$$ \sum_{i=1}^{n} \sum_{j=1 ...