Laravel

分类下相关文章

office 已检测到文件存在问题,编辑此文件可能存在风险

在使用 Maatwebsite/Laravel-Excel 将后台用户数据导出到 Excel 中时,遇到一个诡异的问题。 部分用户的微信昵称在 Excel 中不显示,Excel 版本为 2019。 同时,Excel 的顶部还出现一条风险提示: office已检测到文件存在问题 编辑此文件可能存在风险 经同事测试,发现当微信昵称中存在 emoji 表情时,就能百分比重现此问题。看来是 Excel 把 emoji 当成了非法字符。 所以解决方案就是把昵称中的 emoji 过滤掉,然后导出到 Excel。 实现方法参考这里 https://stackoverflow.com/questions/ ...

阅读全文...

Laravel 生成指定位数的邀请码

需求场景 为注册会员生成独有的邀请码,每个会员一个,不能重复。为了方便传播,邀请码的位数暂定为 5 位,由数字和大写字母组成。 为了防止邀请码重复冲突,我在会员表的邀请码字段上加了个唯一索引。 但是,邀请码是在微信支付成功的回调逻辑里触发的,5位的邀请码,还是存在冲突的可能,可以加了个不断重试的机制。 实现代码 /** * 生成邀请码 */ public function gen_invite_code() { $chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; $res = ""; ...

阅读全文...

Laravel 5.8 版本的新功能及更改

2019 年 2 月 26 日,Laravel 新版本 5.8 发布。粗略地扫了一遍新功能列表,感觉没有任何尝试的必要,根本没有升级的冲动。都是不痛不痒的小功能更新。只不过有些修改确实无法向下兼容 5.7 版本,例如 TTL 的单位问题,所以不得不发了 5.8 版本,我觉得是这样。 Laravel 5.8 要求 PHP 版本 >= 7.1.3。 一些新功能: 集成了 PHP dotenv 3.0 随之而来的新特性使 .env 的配置更加灵活: 支持了多行变量。例如 LOCATION="烟台 开发区" 不再对配置字符串进行 trim 操作。 可配置从一堆路径中查找 . ...

阅读全文...

findOrFail / firstOrFail 规避搜索引擎爬虫抓取已删除数据时报错

早上看到几个 Laravel 的网站项目报同一个错误 ERROR: Creating default object from empty value {"userId":5,"exception":"[object] (ErrorException(code: 0): Creating default object from empty value at app/Http/Controllers/ProductController.php:15) 从 Nginx 日志看,错误是因为搜素引擎的爬虫,抓取了一个不存在的商品链接,例如 https: ...

阅读全文...

Laravel 使用 chunkById 遍历大表

问题 现在需要定期遍历物流快递表,以更新物流的状态。但是,这个表在线上生产环境可能非常大,一次性取出来遍历可能爆掉服务器内存。 而使用 chunk 方法,会出现漏掉一半数据未处理的情况: 例如,有 A B C D E 五个物流快递单,每次 chunk 取出两条数据。 第一次取出 A B, 处理完之后,A B 标记为已处理 第二次取时,由于 A B 标记为已处理,在取第二页时,直接跳过了 C D,直接取出了 E。 C D 就被漏掉了 使用 chunkById Laravel 5.5 文档中,并没有说明有 chunkById  这个方法;而 Laravel 5.7 中有专门的说明: If ...

阅读全文...

Laravel model save 时判断指定字段是否发生更改

需求场景,当订单表中的快递公司,或者快递单号发生改变时,更新快递表中的相关字段。 要满足这个需求,就需要能知道订单 Model 更新时,是否修改了这两个字段。 解决方法是使用 getChanges 方法,例如: $order->express_company = '顺丰'; $order->save(); Log::info($order->getChanges()); [2019-01-24 09:46:01] local.INFO: array ( 'express_company' => '顺丰', 'updated_at' => '2019-0 ...

阅读全文...

Laravel easywechat 设置 wx.config

wx.config(<?php echo app('wechat')->js->config(array('updateAppMessageShareData','updateTimelineShareData'), false) ?>); Windows 上报错 cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html) 解决方法 到  https:// ...

阅读全文...

Laravel 读取前端 js 设置的 cookie 始终为空

在前端用 js 设置的 cookie,在后台用 Laravel 始终获取不到,取到的值为空。 例如 $value = $request->cookie('dingding_id'); 问题的原因 Laravel 默认认为 cookie 是被加密过的,例如,在后台设置的 cookie,会被自动加密。 而前端 js 新增的 cookie 是没有加密的,所以 laravel 认为是个无效的 cookie。 解决方法 修改 app/Http/Middlewares/EncryptCookies.php protected $except = [ 'dingding_id', ]; ...

阅读全文...

打印 laravel eloquent 数据库查询对应的 raw sql 日志

在进行复杂查询时,我有时候会对 laravel eloquent 生成的 sql 语句没有信心,需要打印 sql 语句以核对。 方案一:toSql() $sql_orders = Order::where('user_id', $user_id); Log::debug($sql_orders->toSql()); 日志输出为: local.DEBUG: select * from orders where user_id = ? 方案二:DB::getQueryLog() 显示最后一条查询 DB::enableQueryLog(); // 注意,在查询前,需要启用查询日志 $sq ...

阅读全文...

Laravel 自定义校验规则 - Rule Objects

需求 在使用 laravel backpack table 组件时,需要对几个自定义规格字段做校验。例如: 名称、销售价格、成本价为必填 价格确认为数字 而这个是用 laravel 自带的校验规则无法满足的。 自定义校验规则 新建一个 Rule Objects php artisan make:rule SpecFieldRequired 此时,会发现多了一个文件 app/Rules/SpecFieldRequired.php 模拟的输入数据 local.INFO: [{"name":"1斤装","price":"5 ...

阅读全文...

记录 laravel 错误日志的来源文件名及行号,方便定位

最近总是看到服务器日志中出现 local.ERROR: Creating default object from empty value 但是,并不知道具体是哪里记录的,需要定位这行错误是哪里抛出来的。 > grep Log::error -r app/ app/Http/Controllers/Admin/CommentCrudController.php: Log::error($e); app/Http/Controllers/Admin/SmsController.php: \Log::error($e); app/H ...

阅读全文...

Laravel ajax 请求 api 的权限控制

希望得到的效果 在 web 网站中,一些页面的数据需要登录之后才能拉取。 在用户未登录时,ajax 请求某个 API,后台报 401 未授权错误 在用户登录后,可以正常 ajax 调用该 API 是否登录需要使用当前 web 的登录状态,所以不能使用类型小程序那种 token 的方案。 解决方法 修改 app/Http/Kernel.php middlewareGroups 中 api 的配置,添加两行: \App\Http\Middleware\EncryptCookies::class, \Illuminate\Session\Middleware\StartSession::clas ...

阅读全文...

Laravel 通过 snsapi_base 静默授权获取用户微信公众号 openid

由于 JSAPI 调用微信支付需要用户的 openid,所以要了解如何获取到 openid。 还是官方的文档说的清楚 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842 以 snsapi_base 为 scope 发起的网页授权,是用来获取进入页面的用户的 openid 的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)。 应该是用在登录之后,如果没有绑定 open_id 就应该立即调用授权。 前端判断是否在微信中,同时判断是否有 openid,如果在微信中,已登录并且 ...

阅读全文...

Laravel 登录之后,跳转回登录前的页面

场景 我自定义了一套 laravel 的登录逻辑,使用手机号加验证码登录,没有使用 laravel 内置的登录逻辑。 实现方法 先列一下解决方法,然后再一一说明。 例如,如果购物车页面需要登录之后才能访问,并且点击购物车,弹出登录页面,完成登录之后,需要跳回到购物车页面。 首先需要在 route 上加上权限控制。 Route/web.php Route::get('cart', [ 'uses' => 'CartController@cart_index', // 购物车页面 ])->middleware('auth'); 在 web.php 内的 route 不 ...

阅读全文...

The requested resource /login was not found on this server

非常诡异的一个问题。 在 route 中定义了 login 的路由,但是访问 login 链接时,一直报错 The requested resource /login was not found on this server 而这个 404 页面又跟平时的 Laravel 404 页面完全不同。 检查才发现项目根目录的 public 目录下,有个同名的 login 目录,所以请求 login 链接时,实际上请求的是 public 下的 login 目录。。。 把 public 下的 login 目录更名之后,就解决了这个问题。 ...

阅读全文...

近期节日

2019年04月01日 愚人节
2019年04月01日 复活节
2019年04月02日 国际儿童图书日
2019年04月04日 寒食节
2019年04月05日 清明节
2019年04月07日 世界卫生日
2019年04月11日 世界帕金森病日
2019年04月20日 谷雨
2019年04月22日 世界地球日
2019年04月23日 世界读书日
2019年04月26日 知识产权日
2019年04月30日 全国交通安全反思日
查看更多节日