thinkphp5.1常用操作

目录

    • 带参数跳转
    • 接收参数
    • 输出最后一条执行的sql
    • 模板标签循环输出
    • 模板标签内 判断数组长度为0
    • 预定义的 HTML 实体转换为字符
    • update判断
    • 分页
    • 赋值
    • 数据库 增删改查
    • 数据库OR操作
    • 数据库IN操作
    • 时间区间
    • 数据库 自增自减修改
    • 事务
    • 分布式事务
    • 内置验证规则
    • 条件判断
    • 获取控制器模块操作名称
    • apahe伪静态规则

带参数跳转

{:url('admin/admin/index',id=1)}
'{:url("admin/index")}?id='+ id 

接收参数

$data = input('post.data', 1, 'intval');
$goods_name = input('get.goods_name', '', 'strval');

输出最后一条执行的sql

 Db::getLastSql()

模板标签循环输出

<foreach name="users" item="vo">
{$vo.id}  {$vo.username}<br/>
</foreach>

模板标签内 判断数组长度为0

<if condition="count($orderplanfind) gt 0">
<else />
</if>

预定义的 HTML 实体转换为字符

{$template|default=""|htmlspecialchars_decode}

update判断

$userUpdate=Db::name('user')
     ->where('id',$data['id'])
     ->update(['status' =>$data['status']]);

(1)返回false
情况:update不成功,更新方法报错
(2)返回 0
情况:update成功了,但是数据没变化,有可能更新的前后数据一致没变化
(3)返回数字或true
情况:提示保存成功

一般要用 $userUpdate !== false 判断

分页

后端

$page  = input('get.page', 1, 'intval');
$limit = input('get.limit', 100, 'intval');

$user= Db::name("user")
->where('type',1)
->paginate($limit, false, ['page' => $page, 'query' => request()->param()])
->each(function($item, $key){
})

$this->assign('page', $user->render()); //前端没有分页处理时  单独提取分页出来

//前端有分页处理时 返回内容与条数
$data['data']  = $list->items();//内容
$data['count'] = $list->total();//条数

前端没有分页处理时

<volist name="user" id="user">
</volist >

{$page|default=''}

赋值

$this->assign('users', $users);

数据库 增删改查

use think\Db;//也可用model来处理
//删
$userbank=Db::name('user_bank')
           ->where('id',1)
           ->delete();
//增
$data=[
	'id'=>1,
	'name'=>2
];
$userbank=Db::name('user_bank')
 			->insert($data);
//改
$userbank=Db::name('bill_record')
	       ->where('id',$data['id'])
	       ->update(['status' =>$data['status']]);
//数据查询
$sellerplan=Db::name("user")
			->field('id,name')
			->where('uid',1)
			->find();//多数据查询换成select 或column('字段列表', '数组键名')  单字段查询为value('字段名')

//联表查询
$join = [
      ['__SELLER_PLAN__ b', 'a.id=b.uid', 'LEFT'],
];
$list = Db::table('__USER__')
    ->alias('a')
    ->join($join)
    ->where([
        'a.order_status' => 1
    ])
    ->field('a.*,b.name')
    ->select()
    
//联库查询
$res = Db::table('库名1.表名1 t1, 库名2.表名2 t2')
       ->where('t1.id = t2.id')
       ->limit(100)
       ->select();

数据库OR操作

->where('id|uid','eq',1)

数据库IN操作

->where([
   'order_state' => [0, 1, 4, 10]
])

时间区间

//获取指定时间戳内的信息
->whereBetweenTime('audit_time', $time[0], $time[1])

// 获取今天的信息
db('XXX')->whereTime('create_time', 'today')->select();
// 获取昨天的信息
db('XXX')->whereTime('create_time', 'yesterday')->select();
// 获取本周的信息
db('XXX')->whereTime('create_time', 'week')->select(); 
// 获取上周的信息
db('XXX')->whereTime('create_time', 'last week')->select(); 
// 获取本月的信息
db('XXX')->whereTime('create_time', 'month')->select(); 
// 获取上月的信息
db('XXX')->whereTime('create_time', 'last month')->select(); 
// 获取今年的信息
db('XXX')->whereTime('create_time', 'year')->select(); 
// 获取去年的信息
db('XXX')->whereTime('create_time', 'last year')->select(); 

数据库 自增自减修改

//自增
Db::name('user')
    ->where('id', 1)
    ->setInc('frozen', 2);
//自减
Db::name('user')
      ->where('id', 1)
      ->setDec('fund', 2);

事务

//开启事务
Db::startTrans();
try {
    Db::name('core_counter')->where('id', $id)->update(['value' => $value]);
    //执行
    Db::commit();
} catch (\Exception $e) {
	//错误 回滚
	dump($e->getMessage())//为错误信息可打印至日志
    Db::rollback();
}

分布式事务

Db::transactionXa(function () {
    Db::connect('db1')->table('think_user')->delete(1);
    Db::connect('db2')->table('think_user')->delete(1);
}, [Db::connect('db1'),Db::connect('db2')]);

内置验证规则

protected $rule = [
	'username' => 'require|unique:user',
	'nickname' => 'require',
	'role_id' => 'require|integer',
	'password' => 'require|confirm',
	'email' => 'email',
	'mobile' => 'mobile',
	'status' => 'in:0,1',
];
protected $message = [
	'username.require' => '用户名不能为空!',
	'username.unique' => '用户名已经存在!',
	'nickname' => '用户昵称不能为空!',
	'role_id.require' => '所属职位不能为空!',
	'role_id.integer' => '职位格式错误!',
	'password.require' => '密码不能为空!',
	'password.confirm' => '两次输入的密码不一样!',
	'email' => '邮箱地址格式错误!', 
	'mobile' => '手机号码格式错误!', 
	'status' => '状态格式错误(限0或1)!', 
];

条件判断

eq或者 equal 等于
neq 或者notequal 不等于
gt 大于
egt 大于等于
egt 大于等于
lt 小于
elt 小于等于
heq 恒等于
nheq 不恒等于

获取控制器模块操作名称

 $module     = $this->request->module(); //模块
 $controller = $this->request->controller();//控制器
 $action     = $this->request->action();//操作

apahe伪静态规则

伪静态(线上)(Linux)
.c>
	RewriteEngine on
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>


伪静态(本地)(win)
.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^api/?(.*)$ api.php?s=$1 [QSA,PT,L]

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]
</IfModule>

你可能感兴趣的:(thinkphp5.1常用操作)