2016-03-21 82 views
2

我使用laravel 5.2多重驗證,所以我創建了一個新的管理表而不是用戶表。Laravel委託變更表名

我已經安裝了Entrust角色和權限。在委託安裝,我已經委託更改:遷移內容:

public function up() 
{ 
    // Create table for storing roles 
    Schema::create('roles', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('name')->unique(); 
     $table->string('display_name')->nullable(); 
     $table->string('description')->nullable(); 
     $table->timestamps(); 
    }); 

    // Create table for associating roles to users (Many-to-Many) 
    Schema::create('role_management', function (Blueprint $table) { 
     $table->integer('management_id')->unsigned(); 
     $table->integer('role_id')->unsigned(); 

     $table->foreign('management_id')->references('id')->on('managements') 
      ->onUpdate('cascade')->onDelete('cascade'); 
     $table->foreign('role_id')->references('id')->on('roles') 
      ->onUpdate('cascade')->onDelete('cascade'); 

     $table->primary(['management_id', 'role_id']); 
    }); 

    // Create table for storing permissions 
    Schema::create('permissions', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('name')->unique(); 
     $table->string('display_name')->nullable(); 
     $table->string('description')->nullable(); 
     $table->timestamps(); 
    }); 

    // Create table for associating permissions to roles (Many-to-Many) 
    Schema::create('permission_role', function (Blueprint $table) { 
     $table->integer('permission_id')->unsigned(); 
     $table->integer('role_id')->unsigned(); 

     $table->foreign('permission_id')->references('id')->on('permissions') 
      ->onUpdate('cascade')->onDelete('cascade'); 
     $table->foreign('role_id')->references('id')->on('roles') 
      ->onUpdate('cascade')->onDelete('cascade'); 

     $table->primary(['permission_id', 'role_id']); 
    }); 
} 

entrust.php爲:

return [ 
'role' => 'App\Role', 
'roles_table' => 'roles', 
'permission' => 'App\Permission', 
'role_user_table' => 'role_management', 
]; 

,我有3種型號,角色和權限和管理。一切工作正常,但問題是,當我想attachRoles到role_management表下面的代碼:爲什麼會出現management_role

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'digikala.management_role' doesn't exist (SQL: insert into management_role (created_at , management_id , role_id , updated_at) values (2016-03-21 14:26:24, 1, 1, 2016-03-21 14:26:24))

我不知道:

public function store(userManagementFormRequest $request) 
{ 
    $user=new Management(array(
     'name'=>$request->get('name'), 
     'password'=>bcrypt($request->get('password')), 
    )); 
    $user->save(); 
    $user->attachRoles($_POST['role']); 
    return redirect()->back()->with('userStatus','عملیات با موفقیت انجام گردید.'); 
} 

它會顯示一個錯誤而不是role_management,而右表名稱是role_management。另外,我在這個表中只有兩列management_idrole_id,但是在這個錯誤中它也想插入created_atupdated_at到這個表中。

我已經使用了作曲家配置:緩存和作曲家緩存:清除和撰寫轉儲自動加載,但沒有發生。

我的代碼有什麼問題嗎? 管理模式:

namespace App; 

use Illuminate\Foundation\Auth\User as Authenticatable; 
use Zizaco\Entrust\Traits\EntrustUserTrait; 

class Management extends Authenticatable 
{ 
use EntrustUserTrait; 
protected $table='managements'; 
protected $fillable=['name','password']; 
public function roles() 
{ 
    return $this->belongsToMany('App\Role')->withTimestamps(); 
} 
} 
+0

我可以看到您的管理模型嗎? – Tianissimo

+0

我已經添加了我的管理模型。 –

+0

角色函數與此問題沒有任何關係。 –

回答

1

沒有必要覆蓋roles關係的功能。它已經存在於EntrustUserTrait

你可以刪除它,它應該工作。

+0

非常感謝很多人。 –

+0

,但你也必須改變user_id到management_id在EntrustUserTrai.php –

+0

你可以通過在'app/config/entrust.php'中添加''user_foreign_key'=>'management_id''到數組來配置它 – Tianissimo