1. 程式人生 > >laravel(4.2) +Zizaco

laravel(4.2) +Zizaco

function where sql 用戶組 urn config migrate exce tab

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

這篇博客說的蠻詳細的:http://blog.boolw.com/?p=241

簡化後的步驟

1.在根項目composer.json下require鍵下添加以下代碼(註意:在”laravel/framework”: “4.2.*”,後追加逗號):

"zizaco/entrust": "[email protected]"

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_idassigned_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.讓我們首先創建以下RolePermission:

$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