Laravel

分类下相关文章

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 目录更名之后,就解决了这个问题。 ...

阅读全文...

使用 Opcache 优化 Laravel 的性能

Laravel 令人头疼的性能问题 昨天上午,同事在测试一个知识 PK 的小程序,在 2~3 同时在线的情况下,服务器 CPU 居然达到了 60%,触发了阿里云钉钉报警。。。 一个非常简单的 API 接口,虽然写的逻辑确实比较啰嗦,但是一秒钟不超过 5 个请求的情况下,Laravel 硬是把 CPU 彪到了 60%。 这个性能确实让人无法接受,简直是玩具,根本不满足上线的基本要求。 确认是接口逻辑问题还是 Laravel 的问题 为了确认是接口的逻辑问题,还是 Laravel 的问题。我们做了一些简单的对比测试。 测试的对象是两个不同的 Laravel 项目下的相同功能的 API,例如,这里测 ...

阅读全文...

Route pattern cannot reference variable name more than once

在用 Laravel Backpack 写一个定制化的 CRUD 页面。例如,一个指定店铺所拥有的商品的 CRUD 页面。 起初路由我是这样写的 CRUD::resource('products-of-store/{store_id}', 'ProductCrudController'); 报错 Route pattern "/products-of-store/{store_id}/{{store_id}}" cannot reference variable name "store_id" more than once. 解决方法,Route ...

阅读全文...

使用 Laravel Validator 进行 API 的参数校验

之前记录过 Laravel Form 表单的数据校验, 但是大部分时间我是在写 API 给前端调用。 如果能够使用 Laravel 的 Validator 来进行 API 的数据校验,将节省我大量的时间。 测试了一下,确实可以,而且非常方便使用。 以下为我创建的一个 API Validator 的 VIM Code Snippet $rsp = ['err_code' => 0, 'err_msg' => 'OK',]; $input = $request->all(); $rules = [ 'name' => 'required', 'person_tel' ...

阅读全文...

Laravel 返回数据库中的随机一行数据

最佳方式 $total = Book::count() - 1; $skip = mt_rand(0, $total); $item = Book::select('name', 'author_id')->skip($skip)->take(1)->first(); 耗内存的方式 Book::inRandomOrder()->get(); 等同于 Book::orderByRaw("RAND()")->get(); 耗内存的原因是,随机序需要建立临时表。 更加耗内存的 Collection 方案 Book::all()->rand ...

阅读全文...

Laravel Eloquent 自定义返回字段

返回指定字段 Book::select("price", "name")->all(); 返回关系字段关联的属性 Book::select("price", "name", "author_id")->with('author')->all(); 注意,如果要返回关系字段的信息,一定要将对应的 id 字段加入到 select 中。否则关系字段会显示为 null. 返回关系字段关联的指定属性 Book::select("price", "name ...

阅读全文...

Laravel 使用手机号加验证码实现用户登录、注册

是否需要使用 password 理论上,登陆使用手机号及验证码已经足够,唯一的问题是,发送短信的成本。看上去,加上个登陆密码会更好,能省去不少成本。 但是,仔细想想,如果你的商城平台的流量大部分来自于渠道方,用户主动回头访问的概率很低,那就完全没有必要设置密码。设置了密码还会带来弊端 不常登陆的网站,理论上一段时间不用,密码就会忘掉,最后还得短信找回密码 设置密码的过程,增加了干扰用户购买的时间,不利于转化 如果省去了设置密码的步骤,实际上就不需要注册页面了,统一使用 login 逻辑即可。 流程图 lararal 自带的授权逻辑 由于使用手机号加验证码的方式与 laravel php ...

阅读全文...

近期节日

2019年01月27日 国际麻风节
2019年01月28日 小年
2019年02月02日 世界湿地日
2019年02月04日 立春
2019年02月04日 除夕
2019年02月05日 春节
2019年02月07日 国际声援南非日
2019年02月10日 国际气象节
2019年02月14日 情人节
2019年02月19日 雨水
2019年02月19日 元宵节
2019年02月24日 第三世界青年日
查看更多节日