Laravel ACL (Access Control List) 5.1新特性

为了是大家更容易的理解Laravel 5.1 ACL 的新特性,下面我们模拟一个简单的示例来一起学习Laravel ACL 是如何实现的

首先我们以文章用户权限为例准备一些测试数据,比如我们有一张posts表,有2个字段, 一个user_id外键,如下:

id           title              body           user_id

1. 创建数据表 make:migration

我们可以使用 php artisan make:migration 方法创建我们的posts数据表

相关方法可以参考:http://www.golaravel.com/laravel/docs/5.1/migrations/

// 在命令行使用如下方法创建我们的数据迁移文件
php artisan make:migration create_posts_table  --create=posts

我们可以在 database/migrations/目录下找到我们刚才创建的数据库迁移文件, 找到这个文件编辑 up方法:

public function up()
{
    Schema::create('posts', function (Blueprint $table){
        $table->increments('id');
        $table->string('title');
        $table->text('body');
        $table->integer('user_id');
        $table->timestamps();
        // 外键关系,声明级联操作,onDelete onUpdate
        $table->foreign('user_id')
              ->references('id')
              ->on('users')
              ->onDelete('cascade')
    })
}

public function down()
{
    Schema::drop('posts');
}
// 执行 php artisan migrate 将创建我们定义好的posts表
php artisan migrate

posts数据表建立完成,在数据库中查看,你会看到有user password_resets 两张表也一同创建了,这个是laravel5 预定义好的 migreate,不用管它

接下来我们再创建一个post模式

// 使用如下方法创建的Post模型, 生成的文件路径如 app/Post.php
php artisan make:model Post

2. 生成测试数据,编辑/database/factories/ModelFactory.php 文件,定义我们要生成测试数据的规则

$factory->define(App\Post::class, function (Faker\Generator $faker) {
    return [
        // sentence, paragraph 定义生成数据的类型
        'title' => $faker->sentence,
        'body' => $faker->paragraph,
        // 使用factory方法,创建user得到user id
        'user_id' => factory(\App\user::class)->create()->id,
    ]
});
// 依次执行下面的方法
// 执行post的creat方法生,使用我们在 /database/factories/ModelFactory.php 中定义好的规则生成数据
// factory('App\Post')->create()执行一次则生成一个posts文章和一个新用户,为了演示,我们执行2次来创建2篇文章并分别由2个不同的user发布

php artisan tinker
factory(
'App\Post')->create();

测试数据准备完成

 

posted @ 2015-12-04 13:59  Richard2014  阅读(169)  评论(0)    收藏  举报