2016-07-14 11 views
0

Modell 1Multiple mit() Funktion in Laravel Abfrage: Laravel 5.2.37

class RoleModel extends Model { 

    public $table = 'tblrole'; 
    public $primaryKey = 'RoleID'; 
    public $timestamps = true; 

    public function RoleBasedPermissions() { 
     return $this->hasMany('App\Models\Role\RolePermissionModel', 'RoleID', 'RoleID'); 
    } 
} 

Modell 2

class RolePermissionModel extends Model 
{ 
    public $table = 'tblrolepermission'; 
    public $primaryKey = 'RolePermissionID'; 
    public $timestamps = false; 

    public function Permission() { 
     return $this->hasOne('App\Models\Role\RolePermissionModel', 
      'PermissionID', 'PermissionID'); 
    } 

    public function Role() { 
     return $this->hasOne('App\Models\Role\RoleModel', 
      'RoleID', 'RoleID'); 
    } 
} 

Modell 3

class PermissionModel extends Model 
{ 
    public $table = 'tblpermission'; 
    public $primaryKey = 'PermissionID'; 
    public $timestamps = false; 

    public function Module() { 
     return $this->hasOne('App\Models\Role\ModuleModel', 
      'ModuleID', 'ModuleID'); 
    } 

    public function Action() { 
     return $this->hasOne('App\Models\Role\ActionModel', 
      'ActionID', 'ActionID'); 
    } 
} 

Meine Suche ist unter

$data = RoleModel 
    ::where('RoleID', $RoleID) 
    ->with('RoleBasedPermissions') 
    ->with('RoleBasedPermissions.Permission') 
    ->with('RoleBasedPermissions.Permission.Module') 
    ->get(); 

Fehler

Call to undefined Methode Illuminate \ Database \ query \ Builder :: Module()

Einzelheiten

Problem ist in dieser Abfrage p Kunst ->with('RoleBasedPermissions.Permission.Module')

Fehle ich etwas?

Antwort

1

Auch die anderen Argumente müssen wahrscheinlich ebenfalls aktualisiert werden.


BTW, Sie nicht diese 3 Anrufe with müssen. Ein einzelner Anruf lädt die gesamte Kette:

$data = RoleModel::where('RoleID', $RoleID) 
    ->with('RoleBasedPermissions.Permission.Module') 
    ->get();