ThinkPHP 5.0 快速入门

url 设计

严格区分大小写

'url_convert'    =>  false,

CLI

php index.php(或者其它应用入口文件) 模块/控制器/操作/[参数名/参数值...]

命名空间

自动注册,EXTEND_PATH目录(默认为extend)

\think\Loader::addNamespace('my','../application/extend/my/');

\think\Loader::addNamespace([
    'my'  => '../application/extend/my/',
    'org' => '../application/extend/org/',
]);

config 配置

'root_namespace' => [
    'my'  => '../application/extend/my/',
    'org' => '../application/extend/org/',
]

黑白课堂

配置参数

// 设置配置参数
Config::set($config);
// 读取二级配置参数
echo Config::get('user.type');
// 或者使用助手函数
echo config('user.type');

类导入

又或者没有使用命名空间的话

Loader::import('org.util.array');
Loader::import('@.util.upload');

// 引入 extend/qrcode.php
Loader::import('qrcode', EXTEND_PATH);
// 助手函数
import('qrcode', EXTEND_PATH);

// 引入 extend/wechat-sdk/wechat.class.php
Loader::import('wechat-sdk.wechat', EXTEND_PATH, '.class.php');
// 助手函数
import('wechat-sdk.wechat', EXTEND_PATH, '.class.php');

绑定模块

define('BIND_MODULE','index');

原本访问的地址

http://www.demo7.com/index/index/demo.html

变成

http://www.demo7.com/index/demo.html

路由

use think\Route;

Route::rule(['demo','demo/:id'],'index/Index/demo');
//Route::rule(['名字','demo/:id'],'控制器位置','http 方法');

Route::get('demo/:id','index/Index/demo'); 

Route::get('demo/:id','index/Index/demo',参数,正则); 

黑白课堂

Route::get('new/:id','News/read'); // 定义GET请求路由规则
Route::post('new/:id','News/update'); // 定义POST请求路由规则
Route::put('new/:id','News/update'); // 定义PUT请求路由规则
Route::delete('new/:id','News/delete'); // 定义DELETE请求路由规则
Route::any('new/:id','News/read'); // 所有请求都支持的路由规则

黑白课堂

资源路由

php think make:controller index/Blog
Route::resource('blog','index/blog');

黑白课堂

快速路由

Route::controller('user','index/User');
namespace app\index\controller;

class User {
    public function getInfo()
    {
    }

    public function getPhone()
    {
    }

    public function postInfo()
    {
    }

    public function putInfo()
    {
    }

    public function deleteInfo()
    {
    }
}

路由分组

Route::group('blog',function(){
    Route::any(':id','blog/read',[],['id'=>'\d+']);
    Route::any(':name','blog/read',[],['name'=>'\w+']);
},['method'=>'get','ext'=>'html']);

miss路由

Route::miss('public/miss');

控制器定义

namespace app\index\controller;

class Index 
{
    public function index()
    {
        return 'index';
    }
}

渲染模板

return $view->fetch('index');
return view('index');

如果继承了think\Controller类的话,可以直接调用think\View及think\Request类的方法,例如

渲染模板

 return $this->fetch('index');

渲染输出,自动输出对应格式

控制器初始化

 public function _initialize()
    {
        echo 'init<br/>';
    }

前置操作,可以理解为附加的操作

 protected $beforeActionList = [
        'first',
        'second' =>  ['except'=>'hello'],//后面是匹配方法,这里表示除了'hello'方法的都要执行
        'three'  =>  ['only'=>'hello,data'],
    ];

跳转和重定向

 $this->success('新增成功', 'User/list');
   $this->error('新增失败');//错误页面的默认跳转页面是返回前一页,通常不需要设置

success方法的默认跳转地址是$_SERVER["HTTP_REFERER"],error方法的默认跳转地址是javascript:history.back(-1);
模板,THINK_PATH . 'tpl/dispatch_jump.tpl'

黑白课堂

重定向

//重定向到News模块的Category操作
$this->redirect('News/category', ['cate_id' => 2]);

session闪存数据传值

$this->redirect('News/category', ['cate_id' => 2], 302, ['data' => 'hello']);
//使用redirect助手函数还可以实现更多的功能,例如可以记住当前的URL后跳转
redirect('News/category')->remember();
//需要跳转到上次记住的URL的时候使用:
redirect()->restore();

请求

$request = Request::instance();
$request = request();
$request = Request::instance();
// 获取当前域名
echo 'domain: ' . $request->domain() . '<br/>';
// 获取当前入口文件
echo 'file: ' . $request->baseFile() . '<br/>';
// 获取当前URL地址 不含域名
echo 'url: ' . $request->url() . '<br/>';
// 获取包含域名的完整URL地址
echo 'url with domain: ' . $request->url(true) . '<br/>';
// 获取当前URL地址 不含QUERY_STRING
echo 'url without query: ' . $request->baseUrl() . '<br/>';
// 获取URL访问的ROOT地址
echo 'root:' . $request->root() . '<br/>';
// 获取URL访问的ROOT地址
echo 'root with domain: ' . $request->root(true) . '<br/>';
// 获取URL地址中的PATH_INFO信息
echo 'pathinfo: ' . $request->pathinfo() . '<br/>';
// 获取URL地址中的PATH_INFO信息 不含后缀
echo 'pathinfo: ' . $request->path() . '<br/>';
// 获取URL地址中的后缀信息
echo 'ext: ' . $request->ext() . '<br/>';
domain: http://tp5.com
file: /index.php
url: /index/index/hello.html?name=thinkphp
url with domain: http://tp5.com/index/index/hello.html?name=thinkphp
url without query: /index/index/hello.html
root:
root with domain: http://tp5.com
pathinfo: index/index/hello.html
pathinfo: index/index/hello
ext: html

设置/获取 模块/控制器/操作名称

echo "当前模块名称是" . $request->module();
echo "当前控制器名称是" . $request->controller();
echo "当前操作名称是" . $request->action();

其他

$request = Request::instance();
echo '请求方法:' . $request->method() . '<br/>';
echo '资源类型:' . $request->type() . '<br/>';
echo '访问ip地址:' . $request->ip() . '<br/>';
echo '是否AJax请求:' . var_export($request->isAjax(), true) . '<br/>';
echo '请求参数:';
dump($request->param());
echo '请求参数:仅包含name';
dump($request->only(['name']));
echo '请求参数:排除name';
dump($request->except(['name']));

获取路由和调度信息

$request = Request::instance();
echo '路由信息:';
dump($request->route());
echo '调度信息:';
dump($request->dispatch());
路由信息:
array (size=4)
  'rule' => string 'hello/:name' (length=11)
  'route' => string 'index/hello' (length=11)
  'pattern' => 
    array (size=1)
      'name' => string '\w+' (length=3)
  'option' => 
    array (size=0)
      empty

调度信息:
array (size=2)
  'type' => string 'module' (length=6)
  'module' => 
    array (size=3)
      0 => null
      1 => string 'index' (length=5)
      2 => string 'hello' (length=5)

设置请求信息

$request = Request::instance();
$request->root('index.php');
$request->pathinfo('index/index/hello');

表单获取

黑白课堂

input('param.name');
input('param.');
或者
input('name');
input('');

检测变量是否设置

Request::instance()->has('id','get');
Request::instance()->has('name','post');

input('?get.id');
input('?post.name');

更改变量

// 更改GET变量
Request::instance()->get(['id'=>10]);
// 更改POST变量
Request::instance()->post(['name'=>'thinkphp']);

获取请求类型

// 是否为 GET 请求
if (Request::instance()->isGet()) echo "当前为 GET 请求";
// 是否为 POST 请求
if (Request::instance()->isPost()) echo "当前为 POST 请求";
// 是否为 PUT 请求
if (Request::instance()->isPut()) echo "当前为 PUT 请求";
// 是否为 DELETE 请求
if (Request::instance()->isDelete()) echo "当前为 DELETE 请求";
// 是否为 Ajax 请求
if (Request::instance()->isAjax()) echo "当前为 Ajax 请求";
// 是否为 Pjax 请求
if (Request::instance()->isPjax()) echo "当前为 Pjax 请求";
// 是否为手机访问
if (Request::instance()->isMobile()) echo "当前为手机访问";
// 是否为 HEAD 请求
if (Request::instance()->isHead()) echo "当前为 HEAD 请求";
// 是否为 Patch 请求
if (Request::instance()->isPatch()) echo "当前为 PATCH 请求";
// 是否为 OPTIONS 请求
if (Request::instance()->isOptions()) echo "当前为 OPTIONS 请求";
// 是否为 cli
if (Request::instance()->isCli()) echo "当前为 cli";
// 是否为 cgi
if (Request::instance()->isCgi()) echo "当前为 cgi";
if (request()->isGet()) echo "当前为 GET 请求";

HTTP头信息

$agent = Request::instance()->header('user-agent');
$agent = Request::instance()->header('User-Agent');
$agent = Request::instance()->header('USER_AGENT');

伪静态

'url_html_suffix' => 'shtml'

注入

黑白课堂
黑白课堂

数据库

连接数据库

Db::connect([
    // 数据库类型
    'type'        => 'mysql',
    // 数据库连接DSN配置
    'dsn'         => '',
    // 服务器地址
    'hostname'    => '127.0.0.1',
    // 数据库名
    'database'    => 'thinkphp',
    // 数据库用户名
    'username'    => 'root',
    // 数据库密码
    'password'    => '',
    // 数据库连接端口
    'hostport'    => '',
    // 数据库连接参数
    'params'      => [],
    // 数据库编码默认采用utf8
    'charset'     => 'utf8',
    // 数据库表前缀
    'prefix'      => 'think_',
]);

//或者使用字符串方式:
Db::connect('mysql://root:1234@127.0.0.1:3306/thinkphp#utf8');

配置定义

Db::connect('db_config1');
Db::connect('db_config2');

模型定义

namespace app\index\model;

use think\Model;

class User extends Model
{
    protected $connection = [
        // 数据库类型
        'type'        => 'mysql',
        // 数据库连接DSN配置
        'dsn'         => '',
        // 服务器地址
        'hostname'    => '127.0.0.1',
        // 数据库名
        'database'    => 'thinkphp',
        // 数据库用户名
        'username'    => 'root',
        // 数据库密码
        'password'    => '',
        // 数据库连接端口
        'hostport'    => '',
        // 数据库连接参数
        'params'      => [],
        // 数据库编码默认采用utf8
        'charset'     => 'utf8',
        // 数据库表前缀
        'prefix'      => 'think_',
    ];
}
 protected $connection = 'mysql://root:1234@127.0.0.1:3306/thinkphp#utf8';

 protected $connection = 'db_config1';

原生SQL Db::

Db::query('select * from think_user where id=:id',['id'=>8]);
Db::execute('insert into think_user (id, name) values (:id, :name)',['id'=>8,'name'=>'thinkphp']);

Db::connect($config)->query('select * from think_user where id=:id',['id'=>8]);

构造器

需要全部前缀名

Db::table('think_user')->where('id',1)->find();

Db::table('think_user')->where('status',1)->select();

自动补齐前缀

Db::name('user')->where('id',1)->find();
Db::name('user')->where('status',1)->select();
db('user')->where('id',1)->find();
db('user')->where('status',1)->select();

查询某个字段的值可以用

// 返回某个字段的值
Db::table('think_user')->where('id',1)->value('name');
//value 方法查询结果不存在,返回 null

查询某一列的值可以用

Db::table('think_user')->where('status',1)->column('name');
// 指定索引
Db::table('think_user')->where('status',1)->column('name','id');
Db::table('think_user')->where('status',1)->column('id,name'); // 同tp3的getField
$a=db()->table('articles')->column('id,name');
//或   $a=db()->table('articles')->column('name','id');
print_r($a);
Array
(
    [1] => 343243
    [2] => 343243
    [3] => 343243
)

数据集分批处理

每次处理100条,然后再处理下100条,类似while的循环

Db::table('think_user')->chunk(100, function($users) {
    foreach ($users as $user) {
        //
    }
});

添加数据

$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::table('think_user')->insert($data);
Db::name('user')->insert($data);

自增主键

Db::name('user')->insert($data);
$userId = Db::name('user')->getLastInsID();

Db::name('user')->insertGetId($data);

添加多条数据

$data = [
    ['foo' => 'bar', 'bar' => 'foo'],
    ['foo' => 'bar1', 'bar' => 'foo1'],
    ['foo' => 'bar2', 'bar' => 'foo2']
];
Db::name('user')->insertAll($data);

db('user')->insert($data);

// 添加多条数据
db('user')->insertAll($list);

更新数据

Db::table('think_user')->where('id', 1)->update(['name' => 'thinkphp']);

Db::table('think_user')
    ->where('id', 1)
    ->update([
        'login_time'  => Db::raw('now()'),
        'login_times' => Db::raw('login_times+1'),
    ]);

更新某个字段的值:

Db::table('think_user')->where('id',1)->setField('name', 'thinkphp');

自增或自减一个字段的值

// score 字段加 1
Db::table('think_user')->where('id', 1)->setInc('score');
// score 字段加 5
Db::table('think_user')->where('id', 1)->setInc('score', 5);
// score 字段减 1
Db::table('think_user')->where('id', 1)->setDec('score');
// score 字段减 5
Db::table('think_user')->where('id', 1)->setDec('score', 5);

// 更新数据表中的数据
db('user')->where('id',1)->update(['name' => 'thinkphp']);
// 更新某个字段的值
db('user')->where('id',1)->setField('name','thinkphp');
// 自增 score 字段
db('user')->where('id', 1)->setInc('score');
// 自减 score 字段
db('user')->where('id', 1)->setDec('score');

删除

// 根据主键删除
Db::table('think_user')->delete(1);
Db::table('think_user')->delete([1,2,3]);

// 条件删除    
Db::table('think_user')->where('id',1)->delete();
Db::table('think_user')->where('id','<',10)->delete();

// 根据主键删除
db('user')->delete(1);
// 条件删除    
db('user')->where('id',1)->delete();

查询方法

Db::table('think_user')
    ->where('name','like','%thinkphp')
    ->where('status',1)
    ->find();

    $result = Db::table('think_user')->where(function ($query) {
    $query->where('id', 1)->whereor('id', 2);
})->whereOr(function ($query) {
    $query->where('name', 'like', 'think')->whereOr('name', 'like', 'thinkphp');
})->select();

// 获取`think_user`表所有信息
Db::getTableInfo('think_user');
// 获取`think_user`表所有字段
Db::getTableInfo('think_user', 'fields');
// 获取`think_user`表所有字段的类型
Db::getTableInfo('think_user', 'type');
// 获取`think_user`表的主键
Db::getTableInfo('think_user', 'pk');

查询表达式

黑白课堂

where('name','like',['%think','php%'],'OR');
where('id','between','1,8');
where('id','between',[1,8]);
where('id','not in','1,5,8');
where('name', null);
where('title','null');
where('name','not null');
where('id','exp',' IN (1,3,8) ');

黑白课堂
黑白课堂
黑白课堂

日期

黑白课堂
黑白课堂

高级查询

Db::table('think_user')
    ->where('name|title','like','thinkphp%')
    ->where('create_time&update_time','>',0)
    ->find();

Db::table('think_user')
    ->where('name',['like','thinkphp%'],['like','%thinkphp'])
    ->where('id',['>',0],['<>',10],'or')
    ->find();

Db::table('think_user')
    ->where([
        'name'  =>  ['like','thinkphp%'],
        'title' =>  ['like','%thinkphp'],
        'id'    =>  ['>',0],
        'status'=>  1
    ])
    ->select();

原生

Db::query("select * from think_user where status=1");
Db::execute("update think_user set name='thinkphp' where status=1");

事务操作

Db::transaction(function(){
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);
});

// 启动事务
Db::startTrans();
try{
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);
    // 提交事务
    Db::commit();    
} catch (\Exception $e) {
    // 回滚事务
    Db::rollback();
}

数据集

黑白课堂

模型

namespace app\index\model;

use think\Model;

class Index extends Model
{

    //自定义初始化
    protected function initialize()
    {
        //需要调用`Model`的`initialize`方法
        parent::initialize();
        //TODO:自定义的初始化
    }
}
// 静态调用
$user = User::get(1);
$user->name = 'thinkphp';
$user->save();

// 实例化模型
$user = new User;
$user->name= 'thinkphp';
$user->save();

// 使用 Loader 类实例化(单例)
$user = Loader::model('User');

// 或者使用助手函数`model`
$user = model('User');
$user->name= 'thinkphp';
$user->save();

crul

$user           = new User;
$user->name     = 'thinkphp';
$user->email    = 'thinkphp@qq.com';
$user->save();
// 获取自增ID
echo $user->id;

支持批量新增

$user = new User;
$list = [
    ['name'=>'thinkphp','email'=>'thinkphp@qq.com'],
    ['name'=>'onethink','email'=>'onethink@qq.com']
];
$user->saveAll($list);

助手

// 使用model助手函数实例化User模型
$user = model('User');
// 模型对象赋值
$user->data([
    'name'  =>  'thinkphp',
    'email' =>  'thinkphp@qq.com'
]);
$user->save();

更新

$user = User::get(1);
$user->name     = 'thinkphp';
$user->email    = 'thinkphp@qq.com';
$user->save();

$user = new User;
// save方法第二个参数为更新条件
$user->save([
    'name'  => 'thinkphp',
    'email' => 'thinkphp@qq.com'
],['id' => 1]);

$user = new User;
$list = [
    ['id'=>1, 'name'=>'thinkphp', 'email'=>'thinkphp@qq.com'],
    ['id'=>2, 'name'=>'onethink', 'email'=>'onethink@qq.com']
];
$user->saveAll($list);

$user = new User;
$user->where('id', 1)
    ->update(['name' => 'thinkphp']);

删除

User::destroy(1);
// 支持批量删除多个数据
User::destroy('1,2,3');
// 或者
User::destroy([1,2,3]);

单个数据

取出主键为1的数据
$user = User::get(1);
echo $user->name;

// 使用数组查询
$user = User::get(['name' => 'thinkphp']);

// 使用闭包查询
$user = User::get(function($query){
    $query->where('name', 'thinkphp');
});
echo $user->name;

$user = new User();
// 查询单个数据
$user->where('name', 'thinkphp')
    ->find();

获取多个数据

// 根据主键获取多个数据
$list = User::all('1,2,3');
// 或者使用数组
$list = User::all([1,2,3]);
foreach($list as $key=>$user){
    echo $user->name;
}
// 使用数组查询
$list = User::all(['status'=>1]);
// 使用闭包查询
$list = User::all(function($query){
    $query->where('status', 1)->limit(3)->order('id', 'asc');
});
foreach($list as $key=>$user){
    echo $user->name;
}

获取器

语法 get名字Arr

黑白课堂
黑白课堂

修改器

语法:set名字Attr
黑白课堂

查询范围

语法:scope名字

 protected function scopeThinkphp($query)
    {
        $query->where('name','thinkphp')->field('id,name');
    }
User::scope('thinkphp')->find();
// 查找年龄大于20的10个用户
User::scope('age')->select();
// 查找name为thinkphp的用户并且年龄大于20的10个用户
User::scope('thinkphp,age')->select();

关联

一对一关联

public function profile()
    {
        return $this->hasOne('Profile');
    }

    $user = User::get(1);
// 输出Profile关联模型的email属性
echo $user->profile->email;

关联更新
$user = User::get(1);
$user->profile->email = 'thinkphp';
$user->profile->save();
// 或者
$user->profile->save(['email' => 'thinkphp']);

相对的关联
belongsTo('关联模型名','外键名','关联表主键名',['模型别名定义'],'join类型');

<?php
namespace app\index\model;

use think\Model;

class Profile extends Model 
{
    public function user()
    {
        return $this->belongsTo('User','uid');
    }
}

其他看手册

关联预载入 with

$list = User::with('profile')->select([1,2,3]);

视图

黑白课堂

view('[模板文件]'[,'模板变量(数组)'][,模板替换(数组)])
'template'               => [
    // 模板引擎类型 支持 php think 支持扩展
    'type'         => 'Think',
    // 模板路径
    'view_path'    => './template/',
    // 模板后缀
    'view_suffix'  => 'html',
    // 模板文件名分隔符
    'view_depr'    => DS,
    // 模板引擎普通标签开始标记
    'tpl_begin'    => '{',
    // 模板引擎普通标签结束标记
    'tpl_end'      => '}',
    // 标签库标签开始标记
    'taglib_begin' => '{',
    // 标签库标签结束标记
    'taglib_end'   => '}',
],
namespace index\app\controller;

class Index extends \think\Controller
{
    public function index()
    {
        // 模板变量赋值
        $this->assign('name','ThinkPHP');
        $this->assign('email','thinkphp@qq.com');
        // 或者批量赋值
        $this->assign([
            'name'  => 'ThinkPHP',
            'email' => 'thinkphp@qq.com'
        ]);
        // 模板输出
        return $this->fetch('index');
    }
}

黑白课堂
黑白课堂

模板

Name:{$data.name}
Email:{$data.email}

Name:{$data['name']}
Email:{$data['email']}

// 调用Request对象的get方法 传入参数为id
{$Request.get.id}
// 调用Request对象的param方法 传入参数为name
{$Request.param.name}
// 调用Request对象的param方法 传入参数为user.nickname
{$Request.param.user.nickname}
// 调用Request对象的root方法
{$Request.root}
// 调用Request对象的root方法,并且传入参数true
{$Request.root.true}
// 调用Request对象的path方法
{$Request.path}
// 调用Request对象的module方法
{$Request.module}
// 调用Request对象的controller方法
{$Request.controller}
// 调用Request对象的action方法
{$Request.action}
// 调用Request对象的ext方法
{$Request.ext}
// 调用Request对象的host方法
{$Request.host}
// 调用Request对象的ip方法
{$Request.ip}
// 调用Request对象的header方法
{$Request.header.accept-encoding}

方法

{:substr(strtoupper(md5($name)),0,3)}
{$name|md5|strtoupper|substr=0,3}

{$user.nickname|default="这家伙很懒,什么也没留下"}

运算符

{$status? '正常' : '错误'}
{$info['status']? $info['msg'] : $info['error']}
{$info.status? $info.msg : $info.error }

//表示$varname为真时才输出xx
{$varname?='xxx'} 

原样输出

{literal}
    Hello,{$name}!
{/literal}

循环输出标签

{volist name="list" id="vo"}
{$vo.id}:{$vo.name}<br/>
{/volist}

{foreach $list as $vo} 
    {$vo.id}:{$vo.name}
{/foreach}

{for start="开始值" end="结束值" comparison="" step="步进值" name="循环变量名" }
{/for}

黑白课堂

{if condition="($name == 1) OR ($name > 100) "} value1
{elseif condition="$name eq 2"/}value2
{else /} value3
{/if}

{in name="id" value="1,2,3"}
id在范围内
{/in}

{notin name="id" value="1,2,3"}
id不在范围内
{/notin}

{between name="id" value="1,10"}
输出内容1
{/between}

{between name="id" value="1,10"}
输出内容1
{else/}
输出内容2
{/between}

黑白课堂

黑白课堂

日志

Log::error('错误信息');
Log::info('日志信息');
// 和下面的用法等效
Log::record('错误信息','error');
Log::record('日志信息','info');
清空
Log::clear();

验证器

$validate = new Validate([
    'name'  => 'require|max:25',
    'email' => 'email'
]);
$data = [
    'name'  => 'thinkphp',
    'email' => 'thinkphp@qq.com'
];
if (!$validate->check($data)) {
    dump($validate->getError());
}

$rules = [
    'name'  => 'require|max:25',
    'age'   => 'number|between:1,120',
];
$validate = new Validate($rules);
$validate->rule('zip', '/^\d{6}$/');
$validate->rule([
    'email'   => 'email',
]);

验证器

\app\index\validate\User

namespace app\index\validate;

use think\Validate;

class User extends Validate
{

     protected $rule =   [
        'name'  => 'require|max:25',
        'age'   => 'number|between:1,120',
        'email' => 'email',    
    ];

    protected $message  =   [
        'name.require' => '名称必须',
        'name.max'     => '名称最多不能超过25个字符',
        'age.number'   => '年龄必须是数字',
        'age.between'  => '年龄只能在1-120之间',
        'email'        => '邮箱格式错误',   

}

$data = [
    'name'=>'thinkphp',
    'email'=>'thinkphp@qq.com'
];

$validate = Loader::validate('User');

if(!$validate->check($data)){
    dump($validate->getError());
}

表单令牌

<input type="hidden" name="__token__" value="{$Request.token}" />

{:token()}

<input type="hidden" name="__hash__" value="{$Request.token.__hash__}" />

{:token('__hash__')}

缓存

Cache::set('name',$value,3600);
// name自增(步进值为1)
Cache::inc('name');
// name自增(步进值为3)
Cache::inc('name',3);

dump(Cache::get('name','')); 

Cache::rm('name'); 

获取并删除
Cache::pull('name'); 

Cache::clear(); 

Session

Session::set('name','thinkphp');
Session::get('name');
// 取值并删除
Session::pull('name');

// 清除session(当前作用域)
Session::clear();
// 清除think作用域
Session::clear('think');

// 赋值(当前作用域)
Session::set('name.item','thinkphp');
// 判断(当前作用域)是否赋值
Session::has('name.item');
// 取值(当前作用域)
Session::get('name.item');
// 删除(当前作用域)
Session::delete('name.item');

// 赋值(当前作用域)
session('name', 'thinkphp');

// 赋值think作用域
session('name', 'thinkphp', 'think');

// 判断(当前作用域)是否赋值
session('?name');

// 取值(当前作用域)
session('name');

// 取值think作用域
session('name', '', 'think');

// 删除(当前作用域)
session('name', null);

// 清除session(当前作用域)
session(null);

// 清除think作用域
session(null, 'think');

分页

// 查询状态为1的用户数据 并且每页显示10条数据
$list = Db::name('user')->where('status',1)->paginate(10);
// 把分页数据赋值给模板变量list
$this->assign('list', $list);
// 渲染模板输出
return $this->fetch();

分页page

 {$list->render()}

提示

评论区 (0)

没有记录
支持 markdown,图片截图粘贴拖拽都可以自动上传。
查看更多

最新视频课程

Laravel 的 PhpSpreadsheet 包入门

wap2App 入门讲解,100%速成,全面为你讲解。

ace.js 打造一款属于你的 Web 编辑器,入门文档。

Laravel Permission 中文文档

解释 OAuth 2.0 认证 和使用场景说明

Laravel 之 horizon 队列管理界面系统

钻级赞助商