th5

一、分页修改
1 、需要修改的php
/thinkphp/library/think/paginator/driver/Bootstrap.php

2、需要修改的样式

二、数据库读取
1、php读取
$list = Db::name(‘user’)->where(‘status’,1)->paginate(10); (如果分页的话不用加select 否则会出错)
$this->assign(‘list’, $list);
return $this->fetch();

2、模板输出
{volist name=“list” id=“vo”}
{KaTeX parse error: Expected 'EOF', got '}' at position 6: vo.id}̲:{vo.name}

{/volist}

三、URL 传值
html 传值
1,'producttype'=>2])})}">查看
php 获取
$id = input(‘id’);

四、划横线


五、字符串转数组
s t r = " H e l l o w o r l d . I l o v e S h a n g h a i ! " ; p r i n t r ( e x p l o d e ( " " , str = "Hello world. I love Shanghai!"; print_r (explode(" ", str="Helloworld.IloveShanghai!";printr(explode("",str));
implode(’,’, i m a g e U r l ) 数 组 转 字 符 串 a r r a y d i f f ( imageUrl) 数组转字符串 array_diff( imageUrl)arraydiffarr,$arr2)差集比较
1、参数多的在前面 2、只执行数数组

六 、获取多条件
where(‘id’,‘in’,‘1,5,8’);

七、html 赋值变量
KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲data p").html("…name+""); html
$("#da ").text(“asd”);给标签赋值
$(“img”).attr(“width”,“180”); 指定参数赋值

attr 一定要使用 双引号
ticketid = $(this).attr(“ticketid”);

八、复选框提交
1
2

九、id 触发函数

$("#conserve").click(function(){
console.log(‘123’);
});

十、查找的结果
select 查找后为数组
find 查找后不为数组

十一、ajax 成功后跳转
$.ajax({
url: “{:url(‘index/index’)}”,
data:{‘image’:imageUrl},
type:‘post’,
success: function(data){
location.href = “{:url(‘index.php/index/’)}”;
},
error:function(data) {
location.href = “{:url(‘index.php/index/’)}”;
}
});

十三、 二维数组转换成合并成一个数组(可以存入数据库中的类型)
foreach ($tourer as $key => KaTeX parse error: Expected '}', got 'EOF' at end of input: … foreach (value as k = > k => k=>v){
t o u r e r s [ tourers[ tourers[k][$key]= KaTeX parse error: Expected 'EOF', got '}' at position 16: v; }̲ } arra…promotionid,‘id’)

两个二维数组 合并成一个二维数组
1、 d a t a = a r r a y m e r g e ( data =array_merge( data=arraymerge(a, b ) ; 2 、 f o r e a c h ( b); 2、 foreach ( b);2foreach(ticket as $key => KaTeX parse error: Expected '}', got 'EOF' at end of input: … foreach (param[‘id’] as $k => $v){
t i c k e t [ ticket[ ticket[key][‘num’] = p a r a m [ ′ i d ′ ] [ param['id'][ param[id][k][‘num’];
}
}

十四、日期控件

onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" class="input-text radius size-M" style="width:150px"/>

十五、数据库别名设置
 $where  = " a.id=1  ";
 $data['spot_ticket'] = Db::name('user a')
            ->join('data c  ','a.id = c.ticketid')
            ->field('a.number a.cnumber,c.number ,a.*,c.*')
            ->where($where)
            ->select();

十六、二维转一维数组
//查询同一类的id
l i s t = D ( ′ S o r t ′ ) − > w h e r e ( a r r a y ( ′ t y p e ′ = > list = D('Sort')->where(array('type'=> list=D(Sort)>where(array(type=>this->type))->field(‘tableid’)->select();
//二维转一维数组
a r r = i a r r a y c o l u m n ( arr = i_array_column( arr=iarraycolumn(list,‘tableid’);
return $arr;

十七、批量更新
u p d a t e D a t a = s e l f : : a l l o w F i e l d ( t r u e ) − > s a v e A l l ( updateData = self::allowField(true)->saveAll( updateData=self::allowField(true)>saveAll(updateData);

use app\index\model\SpotTicketPrice as SpotTicketPriceModel; //先调用
n u m b e r s s = ( n e w S p o t T i c k e t P r i c e M o d e l ( ) ) − > s a v e A l l ( numberss = (new SpotTicketPriceModel())->saveAll( numberss=(newSpotTicketPriceModel())>saveAll(numbers); 需先创建一个model然后更新

批量查找
u s e r = s e l f : : a l l ( user = self::all( user=self::all(arr);
u s e r = s e l f : : g e t ( user = self::get( user=self::get(arr)->field(‘id’)->select();


->where(‘id’,‘in’,‘1,2,3’)

十八、获取数据库键名
a r r = a r r a y k e y s ( arr = array_keys( arr=arraykeys(data);

十九、字符串拼接
$txt1 . " ," . $txt2

二十、Indirect modification of overloaded element of think\ tp分页问题
先转化
$datas = $data->toArray();

二十一、转换成时间戳
strtotime()

二十二 、join in 同时使用
w h e r e = " a i n ( b ) " ; j o i n ( ′ a ′ , where = " a in(b)"; join ('a', where="ainb";join(a,where)

二十三 、更新时需要条件
r e s = D b : : n a m e ( ′ u s e r ′ ) − > w h e r e ( ′ i d ′ , 1 ) − > u p d a t e ( res = Db::name('user')->where('id',1)->update( res=Db::nameuser>where(id,1)>update(where); //更新时需要条件
$sql = Db::name(‘user’)->where(‘id’,1)->buildsql(); //返回sql 语句

二十四、字符串家变量 用大括号处理
“限领:{$value[‘limitnumber’]}”;

二十五 、秒数转换成天数
function time2string($second){
d a y = f l o o r ( day = floor( day=floor(second/(360024));
$second = $second%(3600
24);//除去整天之后剩余的时间
h o u r = f l o o r ( hour = floor( hour=floor(second/3600);
$second = $second%3600;//除去整小时之后剩余的时间
m i n u t e = f l o o r ( minute = floor( minute=floor(second/60);
$second = $second%60;//除去整分钟之后剩余的时间
//返回字符串
return d a y . ′ 天 ′ . day.'天'. day..hour.‘小时’. m i n u t e . ′ 分 ′ . minute.'分'. minute..second.‘秒’;
}

二十六
$request->domain() 获取当前域名
h t t p = ′ h t t p : / / ′ . http = 'http://'. http=http://._SERVER[‘HTTP_HOST’];

二十七 、
多维数组 SORT_REGULAR 去掉重复的值
array_unique( B u n d a s s o c O b j − > p r o d i d ( BundassocObj->prodid( BundassocObj>prodid(productid),SORT_REGULAR);

二十八 、二维转一维 然后转成字符串
d e l d a t a = i m p l o d e ( ′ , ′ , a r r a y c o l u m n ( deldata = implode(',',array_column( deldata=implode(,,arraycolumn(deldata,‘id’));

二十九 、去掉字符串最后一个符号
rtrim($arr_str, “,”) php
s=s.substring(0,s.Length-1); jq

三十、layer子弹窗返回给父值

var v = ‘选择区域’;
parent.KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲sel").append(v)…(’#mcsdaa’).text(data[‘0’][‘prodname’]);
parent.layui.form.render(‘select’);

三十一、url 传值
window.location.href=’{:url(“Index/detail”)}?id=’+ iD ;//解析成功

三十二、jq 循环取值
$(“input[name=‘productid[]’]”).each(
function(){
prodid += $(this).val()+’,’;
}
);

三十三、同时获取两张表的数据联表查询

public function beloncar()
    {
        return $this->belongsTo('Car','carid','id');
    }

//一定要有关联的id值
    public function getcarsulist($supId)
    {
        return self::where('trashflag',1)
            ->with(['beloncar'=>function($query) use ($supId){
                $query->field('id')->where('supplierid',$supId);
            }])
            ->paginate();
    }
关联两张表 relation with  belongsTo 什么的 分别测试
   return self::relation(['belonType'=>function($query){
            $query->field('id,kindname');
        }])
            ->relation(['getPrice'=>function($query){
            $query->field('id,min(adultprice) minprice,max(adultprice) maxprice');
        }])
            ->where($where)->paginate();

三十四 php 传变量给html
1、先将数据转成json 格式
d a t a = j s o n e n c o d e ( data = json_encode( data=jsonencode(data,true);
html
console.log($data)

三十五、按搜索条件分页
paginate(10,false,[‘query’=>request()->param()]);

三十六、从数据库获取然后插入数据库中需要重新编码
foreach 处理

三十七、获取最大最小值
field(‘min(adultprice) minprice,max(adultprice) maxprice’)

三十八 、获取器的处理
getData();

三十九、成功失败跳转页面

if($result){
            //设置成功后跳转页面的地址,默认的返回页面是$_SERVER['HTTP_REFERER']
            $this->success('新增成功', 'User/list');
        } else {
            //错误页面的默认跳转页面是返回前一页,通常不需要设置
            $this->error('新增失败');
        }

四十 、当时用select 时 无法使用toArray()
1、改为paginate
2、打开 database.php 增加或修改参数
‘resultset_type’ => ‘\think\Collection’,

四十一、html

{notempty name="ticket_type"} 
	当为空时 不执行
{/notempty}

判断是否为空
<input name="title" value="{$door_edit.title??''}">'
{volist name="ticket_type" id="vo" key="key"}
	<tr>
      <td>1</td>
      <td>新增</td>
      <td>测试</td>
      <td>2018/01/30</td>
      <td>路人甲</td>
	</tr>
 {/volist}

四十二、搜索条件

php
		$id=\request()->param('id','');
      
        $where['trashflag'] = ['eq',1];
        if ($id){
            $where['id']=['like',"%$id%"];
        }
 html
        $('#search').on('click',function () {
        let id=$('input[name="id"]').val() 
            ,url="{:url('agreement/transfer')}";
        window.location.href=url+'?id='+id;
    });

四十三、关联查询

 $list = (new User())
            ->where($where)
            ->whereIn('id',function ($query) use($supplierId,$wh){
                $query->table('access')->where($wh)->whereIn('id',function ($query) use($supplierId){
                        $query->table('sline_auth_group')->whereIn('supplierid',$supplierId)->where('type','eq',1)->field('id');
                })->field('uid');
            })
            ->relation(['rule'])
            ->order('createtime desc')
            ->paginate();

四十五、join 继续查询whereTime 需要空格

 $data = Db::name('insurance i')
            ->field('i.id')
            ->join('insurance d','i.insuranceid=d.id')
            ->whereTime(' d.expirytime','=>',$date)
            ->select();

四十六、数据库为数组
find_in_set 使用这个来查找

area = '440000,441600';(数据库内容)
cityId = '440000';
whereOr("find_in_set('".$cityId."',area)")

四十七、写日志
Log::init([
‘type’ => ‘File’,
‘level’ => [‘sql’,‘info’]
]);
四十八、生成二维码

/*
 * 生成二维码
 * $url 二维码所带参数,url需写完整,如:http://www.baidu.com
 * $save 二维码保存地址 ,不需要保存二维码则为不写,默认直接输出二维码
 * $str 为img标签输出图片
 * */
 function createCode($url,$save=false)
{
    Loader::import('phpqrcode.phpqrcode');
    $obj = new \QRcode();
    ob_end_clean();
    $value = $url;
    $errorCorrectionLevel = "L"; // 纠错级别:L、M、Q、H
    $matrixPointSize = "10"; //生成图片大小 :1到10
//            $obj::png($value, $save, $errorCorrectionLevel, $matrixPointSize);
    if ($save != false){
        $obj::png($value, $save, $errorCorrectionLevel, $matrixPointSize);
        $str =  "<img id='image' src='/{$save}'>";
        return $str;
    }
    $obj::png($value, $save, $errorCorrectionLevel, $matrixPointSize);
}

四十九、return $this->fetch(’’,compact());

五十 、去重->distinct(true) ->field()

五十一、round(1.131, 2); 数据库保留两位小数

五十二、th5 excel导出
注意事项 一定要用url 链接不能用ajax 否则会冲突

window.location.href = "/../../excel.html?a="+a+"&b="+b+"&c="+c+"";

common.php

/**

 * excel表格导出

 * @param string $fileName 文件名称

 * @param array $headArr 表头名称

 * @param array $data 要导出的数据

 * @author static7  */

function excelExport($fileName = '', $headArr = [], $data = []) {
  Loader::import('PHPExcel.PHPExcel');
    Loader::import('PHPExcel.PHPExcel.IOFactory.PHPExcel_IOFactory');
    Loader::import('PHPExcel.PHPExcel.Reader.Excel5');
    $fileName .= "_" . date("Y_m_d") . ".xls";

    $objPHPExcel = new \PHPExcel();

    $objPHPExcel->getProperties();

    $key = ord("A"); // 设置表头

    foreach ($headArr as $v) {

        $colum = chr($key);

        $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v);

        $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v);

        $key += 1;

    }

    $column = 2;

    $objActSheet = $objPHPExcel->getActiveSheet();

    foreach ($data as $key => $rows) { // 行写入

        $span = ord("A");

        foreach ($rows as $keyName => $value) { // 列写入

            $objActSheet->setCellValue(chr($span) . $column, $value);

            $span++;

        }

        $column++;

    }

    $fileName = iconv("utf-8", "gb2312", $fileName); // 重命名表

    $objPHPExcel->setActiveSheetIndex(0); // 设置活动单指数到第一个表,所以Excel打开这是第一个表

    header('Content-Type: application/vnd.ms-excel');

    header("Content-Disposition: attachment;filename='$fileName'");

    header('Cache-Control: max-age=0');

    $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

    $objWriter->save('php://output'); // 文件通过浏览器下载

    exit();

控制器
/**

 * tp5 使用excel导出

 * @param

 * @author staitc7  * @return mixed

 */

public function excel() {

   $name='测试导出';

   $header=['表头A','表头B'];

   $data=[

       ['嘿嘿','heihei'],

       ['哈哈','haha']

   ];

   excelExport($name,$header,$data);

}

//数据转换成可输出的数据类型
function combination($options)
{
    $rows = [];
    foreach ($options as $option => $v) {
        $rows[] = array_values($v);
    }
    return $rows;
}
//转 https://blog.csdn.net/xiaowan206/article/details/78052846 

五十二、 一维数组转换成带符号的字符串
s t r = j o i n ( " , " , str = join(",", str=join(",",arr);
i n S t r = " ′ " . s t r r e p l a c e ( " , " , " ′ , ′ " , inStr = "'".str_replace(",","','", inStr="".strreplace(",",",",str)."’";

五十三 、autocomplete=“new-password” 禁止浏览器 input 输入密码

五十四、软删除 指定模型
use think\model\concern\SoftDelete;
use SoftDelete;
protected $deleteTime = ‘delete_time’;

public function deluser()
{
UserModel::destroy(7);
}

五十五 、collection( a s s d a t a ) − > t o A r r a y ( ) ; a l l 对 象 转 数 组 五 十 六 、 / / 指 点 某 个 键 值 相 同 的 组 成 一 个 新 的 二 维 数 组 f o r e a c h ( assdata)->toArray(); all 对象转数组 五十六、 //指点某个键值相同的组成一个新的二维数组 foreach ( assdata)>toArray();all//foreach(list as $key => $val){
l i s t d a t e [ listdate[ listdate[val[‘bundledid’]][] = KaTeX parse error: Expected 'EOF', got '}' at position 14: val; }̲ 五十七、 return se…where)->fieldRaw("
sum(case when businesstype = 1 and when inorout = 2 then sumtotal) as recharge,
")->find()->toArray();统计分类

五十八、判断是字符串否包含f某个字符
if(strpos(‘1,2,3’,‘1’) !==false){
echo true;
}

五十九、html 内容截取
{$vo.content|mb_substr=0,30,‘utf-8’}
六十 、create 更新后
r e s = s e l f : : c r e a t e ( res = self::create( res=self::create(addSpotTicket,true);
t i c k e t i d = ticketid= ticketid=res->id; 获取产品id

六十一、

whereExp(’’,‘find_in_set(3,asscontracttable) > 0’) 查找某个字段中包含的值

六十二 array_column($oledate,‘id’,‘date’);

六十三 判断数组是否为空 加 二维转一维
r e b a t e = i n a r r a y ( ′ ′ , a r r a y r e d u c e ( rebate = in_array('', array_reduce( rebate=inarray(,arrayreduce(param[‘rebate’], ‘array_merge’, array()));
array (size=2)
0 =>
array (size=1)
‘id’ => ‘8’
1 =>
array (size=1)
‘id’ => ‘9’
i d s = a r r a y r e d u c e ( ids = array_reduce( ids=arrayreduce(order_id, function($ids, KaTeX parse error: Expected '}', got 'EOF' at end of input: …rn array_merge(ids, array_values($value));
}, array());

六十四、定义模型关联查询获取器别名

控制器 
productlist   获取的变量名
foreach ($productlist as $val)
        {
           $val->append(['promotion.Sales'])->toArray();
        }
        
        模型定义 
  public function getSalesAttr($value,$data)
    {
        $status = SupplierProductStatisticsService::getProductsales($data['oldproductid']);
        return $status;
    }
    

thinkphp5.1 验证码 一直验证失败 在cookkie
把配置项’secure’ => true,改成false

//数组查询 find_in_set
$where[]=[’’,‘EXP’,Db::raw(“FIND_IN_SET(4,roleid)”)];
注意,V5.1.7+版本数组方式如果使用exp查询的话,一定要用raw方法。

// 自定义验证规则

protected $rule = [
        'user_name'  =>  'require|checkName:tt',
        'email' =>  'email',
    ];
  
    protected function checkName($value,$rule,$data=[])
    {
        return $rule == $value ? true : '名称错误';
    }

不支持redis

1、安装redis 
下载地址:https://github.com/MSOpenTech/redis/releases。

redis-server.exe redis.windows.conf 启动

phpStudy 安装php_reids
http://pecl.php.net/package/redis  选择 64 或32 位的
然后再php.ini 加上
extension=php_redis.dll
 重启即可

thinkphp 分页样式

.pagination{overflow:hidden;display:block;border-left:1px solid #eee;float:right;}
.pagination li{float:left;border:1px solid #eee;margin-left:-1px;font-size:16px;overflow:hidden;cursor:pointer;}
.pagination li a,
.pagination li span{display:block;padding:6px 18px;}
.pagination li.active{background-color:#393e49;color:#fff;border-color:#393e49;}

array_reduce($datalinesuit, ‘array_merge’, array()) //二维转一维

tp5.1 错误 No input file specified.
修改/public/.htaccess
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]

钩子实例

1、使用run
namespace app\home\behavior;
class Header
{
   public function run(){
        echo "hello world"."<br/>";
    }
}

tags.php
<?php
return [
    // 应用初始化
    'app_init'=> [
        'app\\home\\behavior\\Header'
    ],
    // 应用开始
    'app_begin'    => [
//        'app\\home\\behavior\\Header'
    ],
    // 模块初始化
    'module_init'  => [],
    // 操作开始执行
    'action_begin' => [],
    // 视图内容过滤
    'view_filter'  => [],
    // 日志写入
    'log_write'    => [],
    // 应用结束
    'app_end'      => [],
];

2、使用begin
namespace app\home\behavior;
class Header
{
   public function appBegin(){
        echo "hello world"."<br/>";
    }
}
public function behaviordemo()
    {
        $request  = request();
        $params   = $request->param();

        Hook::add('app_begin','app\\home\\behavior\\Header');
        Hook::add('app_begin','app\\home\\behavior\\Header');
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值