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();
测试数据准备完成

浙公网安备 33010602011771号