LARAVEL 二月 26, 2017

Laravel 5.4 开发笔记

文章字数 1.9k 阅读约需 2 mins. 阅读次数 0

Laravel最近出的Laravel5.4新加了挺多功能的, 比起我用了1年的5.1完善多了. 比较吸引我使用最新的5.4的有几点:

  • 5.4 添加了谷歌内核的浏览器模拟操作
  • 自带API认证类”PASSPORT”
  • 路由自动分类, 现有有了Route自己的文件夹然后里面分类好了WEB和API的路由
    这一篇记录会分享一些我在尝试Laravel 5.4的过程中遇到的问题和经验

开发记录

移植(Migrate)用户和API认证表格是出现sql错误

[Illuminate\Database\QueryException]                                                         
  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 `users_email_unique`(`email`))   
[PDOException]                                                                               
  SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key  
   length is 767 bytes  

解决办法就是在app/Providers/AppServiceProvider.php的这个文件里面的boot方法里面添加一下代码:

use Illuminate\Support\Facades\Schema;

function boot()
{
    Schema::defaultStringLength(191);
}

怎么不使用Laravel5.4自带的用户登录字段

每次使用laravel自带的用户认证体系都会纠结, 怎么不用它自带的email作为用户名!
这次适用Laravel5.4 又遇到了这个问题, 而且解决办法和5.1,5.2的不一样了, 因为Laravel的Auth Provider变动了.
解决办法就是在自带的User.php(用户模型)里面使用findForPassport, 参考一下例子:

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;

    // ... some code

    public function findForPassport($username) {
        return $this->where('id', $username)->first();
    }
}
0%