Ich versuche, eine viele zu viele Beziehung, in diesem Beispiel mit Benutzer und Rolle zu machen.Laravel gehörtToMany funktioniert nur in einer Richtung
In User-Modell habe ich dieses:
public function roles()
{
return $this->belongsToMany('App\Role', 'user_role', 'user_id', 'role_id');
}
In Vorbild habe ich dies:
public function users()
{
return $this->belongsToMany('App\User', 'user_role', 'role_id', 'user_id');
}
Und meine Pivot-Tabelle user_role:
public function up()
{
Schema::create('user_role', function(Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->integer('role_id')->unsigned();
$table->timestamps();
$table->foreign('role_id')->references('id')->on('roles');
$table->foreign('user_id')->references('id')->on('users');
});
}
Nun, wenn ich $user->roles()->attach(1);
tun Er erstellt eine Zeile in der Tabelle user_role. Aber das Problem ist, wenn ich darauf zugreifen möchte: $user->roles;
es gibt nichts zurück. Es funktioniert mit $role->users;
aber nicht anders herum. Was mache ich falsch?
Ich weiß nicht, über Laravel, aber Sie müssen einen „many-to-many-Beziehung“ Tisch zwischen den beiden Tabellen erstellen und verwenden. –
Ich verwende viele zu viele Beziehungsbeispiel aus Laravel Dokumentation https://laravel.com/docs/5.2/eloquent-relationships#many-to-many – user3743266