2016-03-21 7 views
2

Ich benutze Laravel 5.2 multi Auth, so habe ich eine neue Management-Tabelle anstelle von Benutzer Tabelle erstellt.Laravel Entrust ändern Tabellenname

Ich habe Entrust für Rollen und Berechtigungen installiert. Während der Installation betrauen, habe ich geändert betrauen: Migration Inhalt wie:

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']); 
    }); 
} 

und entrust.php als:

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

und ich habe 3 Modelle, Rolle und Permission und Verwaltung. Alles funktioniert gut, aber das Problem ist, wenn ich mit dem Code zu attachRoles in die role_management Tabelle will unter:

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','عملیات با موفقیت انجام گردید.'); 
} 

es wird eine Fehlermeldung an:

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))

Ich weiß nicht, warum es zeigt management_role anstelle von role_management, während der richtige Tabellenname role_management ist. Ich habe auch nur zwei Spalten, management_id und role_id, in dieser Tabelle, aber auch in diesem Fehler möchte es created_at und updated_at in diese Tabelle einfügen.

Ich habe Composer Config verwendet: Cache und Composer-Cache: löschen und komponieren Dump-Autoload, aber nichts passiert.

Ist in meinem Code etwas falsch? Management-Modell:

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

Kann ich Ihr Verwaltungsmodell sehen? – Tianissimo

+0

Ich habe mein Managementmodell hinzugefügt. –

+0

Die Rolle Funktion hat keine Beziehung zu dieser Frage. –

Antwort

1

Es gibt keine Notwendigkeit, die roles Beziehung Funktion außer Kraft zu setzen. Es existiert bereits in der EntrustUserTrait.

Sie können es entfernen und es sollte funktionieren.

+0

vielen Dank Mann es ist in Ordnung. –

+0

aber auch Sie müssen Benutzer-ID zu Management-ID in EntrustUserTrai.php ändern –

+0

Sie können konfigurieren, indem Sie "user_foreign_key" => "Management-ID" in das Array in 'app/config/trust.php' hinzufügen – Tianissimo