Laravel

分类下相关文章

Laravel 禁用指定 URL POST 请求的 csrf 检查

由于在 chrome 插件中使用了跨域请求,所以需要禁用掉 laravel 默认的 post csrf 检查。 配置方法: 在 app/Http/Middleware/VerifyCsrfToken.php 中,添加 except 规则。 例如: class VerifyCsrfToken extends BaseVerifier { protected $except = [ 'api/plant_tree/*', ]; } ...

阅读全文...

修改 Laravel Backpack Admin 后台登录之后的默认首页

Backpack Admin 后台登录之后默认是 dashboard 页。 但是对于小系统来说,这个 dashboard 页毫无用处。所有需要替换为主要的数据管理页。 修改方法,将 routes/web.php Route::get('/', function () { return redirect('admin/dashboard'); }); 替换为 Route::get('/', function () { return redirect('admin/some_other_route'); }); Route::get('/admin/dashboard', fu ...

阅读全文...

Laravel make migrate 报错:Specified key was too long

初始化 laravel 项目时,在我 mac 的旧版本 mysql 5.5 上总会报错,而 MySQL v5.7.7 则一切正常。 无论是 laravel 5.4 还是 5.5 都有这个问题 SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users add unique use rs_email_unique(email)) 解决方法,修改 app/Providers/AppS ...

阅读全文...

laravel 5.6 发布,新特性介绍

早上蹲坑的时候在 reddit 上看到 laravel 5.6 发布了。粗略看了一下,一些新功能 bootstrap 4 内置的注册登录页面、分页按钮样式由 bootstrap 3 升级到 bootstrap 4。 独立的 log 配置文件 config/logging.php 计划任务的单机执行 之前的版本,如果部署在3台服务器上,那么同一个计划任务会执行3遍。单对于一些统计任务,这样做是不合理的。laravel 5.6 新版本提供了 onOneServer 功能,保证一个任务只会在一台服务器上执行。 $schedule->command('report:generate') ...

阅读全文...

保存 laravel model 而不更新 timestamps 的方法

例如,当用户查看一个商品时,会增加其浏览量,但是此时又不希望保存导致更新时间戳 updated_at 方法一 $product = Product::find(1); $product->view_count += 1; $product->timestamps = false; $product->save(); 方法二 (废弃,Laravel 5.5 中测试无效) $product->save(['timestamps' => false]); 重置数据库数据 update products set updated_at = created_at; La ...

阅读全文...

Laravel Blade 模板 @section/endsection 与 @section/show, @yield 的区别

base layout 中需要使用 @section("section_name") 区块链是什么? @show 继承的 blade 中需要使用 @section("section_name") 区块链的定义 @endsection 其会覆盖父模板中的内容。 如果需要基于原 layout section 附加内容 @section("section_name") @parent <p>区块链是xxx</p> @endsection @yield 类似于 @section/show 的用法,但是其继承者 ...

阅读全文...

Laravel 生成 sitemap.xml

从 Google Search Console 看,通过 sitemap.xml 提交的 URL 只有 183 个,而当前博客实际上已经有近 600 篇。而这个 sitemap 是很旧之前上一版 gitbook 生成的。 虽然这些 URL 实际上已经被索引了,但我仍然想规范一下,重新生成 sitemap.xml。 对比了一下几个 Laravel Sitemap 的实现,感觉还是 https://github.com/Laravelium/laravel-sitemap 比较简单明了。 public function sitemap(Request $request) { // create ...

阅读全文...

使用 element ui 重写 laravel backpack 的 table 组件

问题 原组件不支持 date picker。 且用的是 angularjs 写的,我已经看不懂。。。 尝试自爆式地 copy date picker 组件的 jquery 代码,发现事件绑定异常诡异,无法驾驭。 当然 jquery 和 angularjs 并用本身就是作死。。。 冷静了一下,觉得还是使用 vue 重写比较放心。 backpack field 的惯用套路 field 的几个值 name label value old($field['name']) 用于校验失败时,返回 form 界面时自动填充上此前填写的数据。 实现过程 没啥好说的。 element ui 的组件确实好用。 ...

阅读全文...

laravel 返回的 json 数据传递给 vuejs

var items = {!! json_encode($items) !!}; 注意,外层不要加引号。相当于拼接字符串构成一行代码。 这里用到了 Laravel Blade 模板的取消转义功能 If you don't want the data to be escaped, you may use the following syntax: Hello, {!! $name !!}. 否则,json 中的引号会被转义 [{"appointment_date":"2017-12-28","appointment_price" ...

阅读全文...

Laravel 七牛组件上传失败

之前一直用的好好的图片上传七牛 CDN 功能,突然间不好用了。Laravel 后台报错 Call to undefined function Qiniu\Http\curl_init() 服务器系统 Ubuntu 16.04 Server LTS 解决方法 sudo apt update sudo apt install php7.0-curl 无法理解 这事异常诡异,为何就突然找不到 curl_init 了。。。 难道服务器被黑了? ...

阅读全文...

Laravel 后台为微信小程序生成海报图片(嵌入带参数的小程序码)

思路 首先我需要一张海报 (随便找张大图做测试用) Laravel 安装 intervention/image composer require intervention/image 报错 Using version ^2.4 for intervention/image ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Your requirements could no ...

阅读全文...

Laravel & MySQL 优惠券使用后可重复领取逻辑

原设计 一个用户对同一优惠券领取一次,即使使用了,也无法重复领取 coupon_id, user_id 做了联合唯一索引 state 代表是否已经使用: 0 为未使用; 1 为已使用 但这样的表设计,不能支持同一优惠券使用后再次领取。 解决方案 利用 MySQL unique 允许多个 null 的存在的特性。参考 MySQL 唯一约束 Unique 是否允许存在多个 NULL 值 即 coupon_id, user_id, available 做联合唯一索引 available 替代 state 字段作为优惠券是否可用的标识: 1 代表可用;NULL 代表不可用。这样做的目的是为了让 ...

阅读全文...

Laravel Backpack 增加数据验证:结束日期需晚于起始日期

被测试组报了一个 Bug,提交表单的时候没有验证结束日期是否晚于起始日期。 修复方法:修改 app/Http/Requests/CouponRequest.php 文件 public function rules() { return [ 'starttime' => 'required|date', 'endtime' => 'required|date|after_or_equal:starttime', ]; } 这里需要参考 Laravel 的 available vali ...

阅读全文...

使用 Laravel sharedLock 与 lockForUpdate 进行数据表行锁

场景 拼团功能,当 A 客户开团之后(两人团),如果 B 和 C 同时支付,如何规避两人同时将拼团人数增加。 Laravel 中 sharedLock 与 lockForUpdate 的区别 sharedLock 对应的是 LOCK IN SHARE MODE lockForUpdate 对应的是 FOR UPDATE sharedLock 与 lockForUpdate 相同的地方是,都能避免同一行数据被其他 transaction 进行 update。 不同的地方是: sharedLock 不会阻止其他 transaction 读取同一行 lockForUpdate 会阻止其他 tr ...

阅读全文...

使用 Laravel Tinker 为 Laravel Admin 后台添加管理员

做的管理后台,禁用掉了注册功能。 那么问题来了,如何添加第一个管理员帐号呢? 本来想写个 console 命令,后来发现直接用 Laravel 自带的 Tinker 就能方便的搞定 (类似于 Django Shell,Laravel 5.5 已内置) $user = new App\User(); $user->password = Hash::make('kaifuli-is-sb'); $user->email = 'the-email@gmail.com'; $user->save(); 复制上面的代码,复制到 tinker 中即可 php artisan tinke ...

阅读全文...