Ich versuche, eine HasManyTrough-Beziehung mit Eloquent einzurichten, aber es ist unklar, wie es von den Dokumenten funktioniert.Hat viele durch mit Pivot-Tabelle in Laravel4
Tables:
users
- id
- firstname
- ...etc
accounts
- id
- user_id
- username
- ...etc
roles
- id
- permissions
account_role
- id
- account_id
- role_id
Modelle
<?php
class User extends Eloquent {
public function account()
{
return $this->hasOne('Account');
}
// This is what I'm trying to achieve
public function roles()
{
return $this->hasManyThrough('Role', 'Account');
}
}
class Role extends Eloquent {
public function accounts()
{
return $this->belongsToMany('Account')->withTimestamps();
}
}
class Account extends Eloquent {
public function user()
{
return $this->belongsTo('User');
}
}
Fehler und Frage Der Fehler Ich bin gettings ist: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'roles.account_id' in 'on clause'
Ich weiß, ich kann etwas tun $user->account->roles
, aber ich möchte $user->roles
tun können. Wie richte ich das richtig ein?
'hasManyThrough' funktioniert nicht mit Viele-zu-viele-Beziehung, überprüfen Sie diese Antwort: http://stackoverflow.com/questions/23788844/hasmanythrough-with-on-to-many-relationship/23789210 # 23789210. Wenn Sie noch Fragen haben, zögern Sie nicht zu fragen. –
Schöne Workaround, aber ich brauche eifrig laden mit dem Benutzermodell zu arbeiten. Vielleicht gibt es eine Lösung bei der Definition meiner eigenen "Beziehung" oder so. Ich bin mir nicht sicher, wie ich das machen soll. – DerLola
Sicher können Sie Eloquent erweitern und benutzerdefinierte Beziehung, Modellmethoden und so etwas erstellen. Es liegt an dir, die Antwort, die ich verlinkt habe, sollte dir eine Idee geben, wie das geht. Ich habe genau das Gleiche gemacht, weil "goesToThrough" andersherum funktioniert. –