操作步骤:https://github.com/Zizaco/entrust/tree/1.0

这篇博客说的蛮详细的:http://blog.boolw.com/?p=241

简化后的步骤

1.在根项目composer.json下require键下添加以下代码(注意:在”laravel/framework”: “4.2.*”,后追加逗号):

"zizaco/entrust": "1.2.*@dev"

2.执行下面命令

$ composer update

3.在你的config/app.php添加'Zizaco\Entrust\EntrustServiceProvider'的结束$providers

'providers' => array(

    'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
...
'Zizaco\Entrust\EntrustServiceProvider', ),

4.在config/app.php后面添加'Entrust' => 'Zizaco\Entrust\EntrustFacade'到$aliases

'aliases' => array(

    'App'        => 'Illuminate\Support\Facades\App',
'Artisan' => 'Illuminate\Support\Facades\Artisan',
...
'Entrust' => 'Zizaco\Entrust\EntrustFacade', ),

5.设置的属性值config/auth.php。这些值将使用entrust来引用正确的用户表和模型.

6.现在生成entrust迁移,它将生成<timestamp>_entrust_setup_tables.php迁移。目录在你当前执行的项目下的  manage\database\migrations 里

$ php artisan entrust:migration

7.运行下面的语句,生产相关联的四张表

$ php artisan migrate
注意:
SQLSTATE[HY000]: General error: 1005 Can't create table 'laravelbootstrapstarter.#sql-42c_f8' (errno: 150) (SQL: alter table `assigned_roles` add constraint assigned_roles_user_id_foreign foreign key (`
user_id`) references `users` (`id`)) (Bindings: array (
))
也许在这步创建assigned_roles表,会报外键管理错误:你可以检查下,用户表的主键是否设置 UNSIGNED属性,或是 id列在你的用户表没有user_id和assigned_roles字段。并且都是INT(10)。

生产的四张数据表解释:

  roles - 用户组信息表;

  assigned_roles - 用户和用户组之间的对应关系;

  permissions - 权限信息表;

  permission_role - 权限和用户组之间的对应关系.

8.创建模型

a.创建一个角色模型的例子app/models/Role.php:

<?php

use Zizaco\Entrust\EntrustRole;

class Role extends EntrustRole
{ }

b.创建一个权限模型的例子app/models/Permission.php:

<?php

use Zizaco\Entrust\EntrustPermission;

class Permission extends EntrustPermission
{ }

c.接下来,使用HasRole在你现有的特征User模型。例如:

<?php

use Zizaco\Entrust\HasRole;

class User extends Eloquent /* or ConfideUser 'wink' */{
use HasRole; // Add this trait to your user model ...

这将会奏效,使关系Role和下面的方法roles, hasRole( $name ), can( $permission ),ability($roles, $permissions, $options)在你的User模型。

9.别忘了dump composer autoload

$ composer dump-autoload

二.使用

1.让我们首先创建以下Role和Permission:

$owner = new Role;
$owner->name = 'Owner';
$owner->save(); $admin = new Role;
$admin->name = 'Admin';
$admin->save();

2.接下来,创建了两个角色让我们然后分配给用户。HasRole使用非常容易:

$user = User::where('username','=','Zizaco')->first();

/* role attach alias */
$user->attachRole( $admin ); // Parameter can be an Role object, array or id. /* OR the eloquent's original: */
$user->roles()->attach( $admin->id ); // id only

错误解决办法:

问题1:Missing argument 2 for Illuminate\View\Engines\CompilerEngine::handleViewException(), called in E:\wamp\www\wholesale\apps\manage\compiled.php on line 9519 and defined
当操作多对的情况下,可以看看\vendor\zizaco\entrust\src\Entrust\HasRole.php 方面里面的第三个参数是的对了:
public function roles()
    {         return $this->belongsToMany(Config::get('entrust::role'), Config::get('entrust::assigned_roles_table'), 'user_id', 'role_id');
    }

laravel(4.2) +Zizaco的更多相关文章

  1. AdonisJs(Node框架)学习总结

    先列出作为前端开发人员必须知道的10个NodeJs框架  AdonisJs 一个服务端渲染的MVC框架,它是 Laravel (PHP框架)的一个 NodeJS 版本. 可以安装脚手架工具adonis ...

  2. laravel(一):如何安装laravel

    1.前提条件 本文针对想从零开始开发 Laravel 程序的初学者,不需要预先具备任何的 Laravel 使用经验.不过,为了能顺利阅读,还是需要事先安装好一些软件: PHP 5.4 及以上版本 包管 ...

  3. 通过laravel理解IoC(控制反转)容器和DI(依赖注入)

    原文地址: http://www.insp.top/learn-laravel-container ,转载务必保留来源,谢谢了! 容器,字面上理解就是装东西的东西.常见的变量.对象属性等都可以算是容器 ...

  4. 学渣也要搞 laravel(2)—— HTTP路由[1]篇

    前几天忙了,然后快两个星期没有发博客.今天正式回归.哈哈 1. 路由 说到路由当时学的时候给我疑惑了几天..没有仔细看文档.然后一脸蒙蔽的去用 postman[谷歌插件] 测试路由方法.然后就很奇怪 ...

  5. 学渣也要搞 laravel(1)—— 安装篇

    看到laravel(我叫它:拉瓦)那么热门,我也决定学上一学. Laravel 5.2 在 5.1 基础上继续改进和优化,添加了许多新的功能特性:多认证驱动支持.隐式模型绑定.简化Eloquent 全 ...

  6. Windows 7/8/10 系统下Laravel框架的开发环境安装及部署详解(Vagrant + Homestead)

    注意! laravel/homestead box项目地址已经不再是原来的 https://atlas.hashicorp.com/laravel/boxes/homestead 而已经变更成 htt ...

  7. laravel 查询构建器(连贯操作)

    注:laravel 查询返回行的都是 php 的 stdClass 对象实例,不是数组!!!! 1)查询多行(get) DB::table('table_name')->get(); 带偏移和限 ...

  8. laravel基础课程---5、路由复习(路由作用)

    laravel基础课程---5.路由复习(路由作用) 一.总结 一句话总结: 有利于百度收录,及SEO优化 1.路由书写 (D:\laravel\yzmedu\yzm2\routes\web.php) ...

  9. laravel composer 扩展包开发(超详细)

    laravel composer 扩展包开发(超详细) 置顶 2018年02月05日 11:09:16 Simael__Aex 阅读数:10396    版权声明:转载请注明出处:http://blo ...

随机推荐

  1. web.xml中classpath*:与classpath:的区别

    classpath对应src目录,该目录下的文件会在编译后被存放到WEB-INF文件夹下的classes目录. classpath:只会到你的class路径中查找配置文件,对于多个同名的配置文件,只会 ...

  2. Python实现决策树ID3算法

    主要思想: 0.训练集格式:特征1,特征2,...特征n,类别 1.采用Python自带的数据结构字典递归的表示数据 2.ID3计算的信息增益是指类别的信息增益,因此每次都是计算类别的熵 3.ID3每 ...

  3. 更新项目,uwsgi重新加载和日志文件

    uwsgi --reload /var/run/uwsgi.pid uwsgi.pid是uwsgi进程文件 /var/log/uwsgi.log

  4. C#中构造函数和析构函数区别

    把对象的初始化工作放在构造函数中,把清除工作放在析构函数中.当对象被创建时,构造函数被自动执行.当对象消亡时,析构函数被自动执行.这样就不用担心忘记对象的初始化和清除工作. 析构函数是由垃圾回收器控制 ...

  5. 释放资源的一般范式——更锋利的C#代码小记

    public class Photo : IDisposable { //在Finalize函数中调用内部的Dispose方法 ~Photo() { //被自动回收时仅释放托管资源,不释放非托管资源 ...

  6. Thymeleaf 在项目中的应用及前后端交互的一些知识(1)

    经过一段时间的工作,我的第一个项目已经快要上线了.本篇文章介绍些thymeleaf在工作中的实际应用,但是更多的还是一些前端处理后台数据的一些思路,如果有什么不正确的地方,希望大家指点. 1.th:e ...

  7. 伟景行 citymaker 从入门到精通(2)——工程图层树加载

    工程树是指explorer左边这棵树 本例子实现了图层树加载,点击节点切换可视状态 树控件使用easyui的树 html部分 onCheck:treeProjectTreeOnCheck是指树节点的o ...

  8. hdu 5402 Travelling Salesman Problem (技巧,未写完)

    题意:给一个n*m的矩阵,每个格子中有一个数字,每个格子仅可以走一次,问从(1,1)走到(n,m) 的路径点权之和. 思路: 想了挺久,就是有个问题不能短时间证明,所以不敢下手. 显然只要n和m其中一 ...

  9. 原创:E325: ATTENTION vim超完整超给力的问题与解决方法

    又到了老葵花哥哥开课的时间 这是给大家提供一个企业常见的错误 我相信大家生活还编程中会长期使用接触这个错误 这里我们经常用的两个选项 (E)dit any way 编辑原来的文件,忽略刚刚做的修改 ( ...

  10. Android(java)学习笔记181:多媒体之图片画画板案例

    1.首先我们编写布局文件activity_main.xml如下: <RelativeLayout xmlns:android="http://schemas.android.com/a ...