So habe ich eine user
Tisch, ein role
Tisch und eine Zwischentabelle für diejenigen 2, user_role
. Es ist eine Viele-zu-Viele-Beziehung zwischen den ersten beiden Tabellen. Ich möchte die Anzahl der Benutzer, die eine bestimmte Rolle haben, zurückgeben, aber ich kann nicht scheinen, es richtig zu machen.über Pivot-Tabelle Laravel 5.2
Meine Migrationen:
Benutzer:
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->string('email')->unique();
$table->string('username')->unique();
$table->string('password');
});
Rolle:
Schema::create('roles', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->string('name', 40);
$table->string('description', 255);
});
user_role:
Schema::create('user_role', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->integer('user_id');
$table->integer('role_id');
});
Beziehung zwischen ihnen:
public function users(){ //in role model
return $this->belongsToMany('App\User', 'user_role', 'role_id', 'user_id')->withTimestamps();
}
public function roles(){ //in user model
return $this->belongsToMany('App\Role', 'user_role', 'user_id', 'role_id')->withTimestamps();
}
Rolle Seeder:
public function run()
{
Role::create([
'id' => 1,
'name' => 'Admin',
'description' => 'Admin User.'
]);
Role::create([
'id' => 2,
'name' => 'Vendor',
'description' => 'Vendor User.'
]);
Role::create([
'id' => 3,
'name' => 'User',
'description' => 'Simple User.'
]);
}
in Controller:
public function adminDashboard(){
$users = User::all();
return view('admin.dashboard')->withUsers($users);
}
im Blick:
{{ $users->count() }}
Das ist offensichtlich, gibt die Gesamtzahl der Benutzer in der Benutzertabelle. Irgendwelche Ideen, wie man die Anzahl der Benutzer zurückgibt, die eine bestimmte Rolle haben?
das scheint nicht helfen. Es gibt Fehler zurück: Method Benutzer existiert nicht. – daino92
Aber Sie haben erwähnt, Sie haben eine öffentliche Funktion users() in Ihrem Rollenmodell Versuchen Sie: $ role = Role :: find (1); echo $ rolle-> users() -> count() – Paras
Sie haben Recht. Aber trotzdem ... Irgendwelche Gedanken, warum passiert das? – daino92