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

  • 相关阅读:
    array_map()与array_shift()搭配使用 PK array_column()函数
    Educational Codeforces Round 8 D. Magic Numbers
    hdu 1171 Big Event in HDU
    hdu 2844 poj 1742 Coins
    hdu 3591 The trouble of Xiaoqian
    hdu 2079 选课时间
    hdu 2191 珍惜现在,感恩生活 多重背包入门题
    hdu 5429 Geometric Progression 高精度浮点数(java版本)
    【BZOJ】1002: [FJOI2007]轮状病毒 递推+高精度
    hdu::1002 A + B Problem II
  • 原文地址:https://www.cnblogs.com/eleven24/p/6930963.html
Copyright © 2020-2023  润新知