zoukankan      html  css  js  c++  java
  • 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', 	estHook::class);
    // 调用	estHook类的test方法 (静态方法)
    Hook::add('t123', '	estHook::test');
    // 调用	estHook类的tt方法
    Hook::add('t123', [	estHook::class, 'tt']);
    // 调用	estHook类的fuck方法,不存在则调用run方法
    Hook::add('fuck', 	estHook::class);
    

    3、tp5 验证器使用回调进行验证

     1 namespace appapivalidate;
     2 
     3 use thinkValidate;
     4 
     5 class Test extends Validate
     6 {
     7     public function __construct(array $rules = [], array $message = [], array $field = [])
     8     {
     9         parent::__construct($rules, $message, $field);
    10         $this->rule['test'] = function ($value) {
    11             return $this->message['test'];
    12         };
    13     }
    14 
    15     protected $message = [
    16         'test' => 'just a test hahahhhhh',
    17     ];
    18 }

    在构造函数里面添加rule的原因是,类变量$rule里面的值不可以传闭包进行初始化。

    闭包返回值:返回true表示验证成功,或者返回字符串(错误失败,这时返回的将会是错误信息,使用getError()方法将会获取到该信息)

    4、在基础控制器或者_initialize方法里面判断不登陆的时候返回

    	hinkResponse::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创建视图

  • 相关阅读:
    编写PHP规则
    phpmyadmin修改mysql数据库密码
    响应式设计:流式布局
    响应式设计:媒体查询
    html5、css3及响应式设计入门
    HTML5学习笔记五:html5表单
    HTML5学习笔记四:html5结构
    HTML5学习笔记三:aside元素,time元素与微格式
    css基础知识1——css基础语法、css选择器、css继承和层叠
    HTML基础知识5——<div>和<span>标签
  • 原文地址:https://www.cnblogs.com/eleven24/p/6930963.html
Copyright © 2011-2022 走看看