2014-10-23 4 views
8

ich den folgenden Code leite,Laravel Sync Fehler

if($organisation->save()) { 

     if(isset($members)) { 
      $organisation->users()->sync($members); 
     } 

     if(isset($teams)) { 
      $organisation->teams()->sync($teams); 
     } 

     if(isset($teams)) { 
      $organisation->clients()->sync($clients); 
     } 

     if(isset($projects)) { 
      $organisation->projects()->sync($projects); 
     } 

     $organisation->load('users'); 
     $organisation->load('teams'); 
     $organisation->load('clients'); 
     $organisation->load('projects'); 

     return Response::make($organisation, 200); 

    } 

Ich bin die folgende Fehlermeldung erhalten, wenn ich versuche, und Sync-$projects,

das Array wie folgt aussieht,

[0] => 6 so ein sehr sehr einfaches Array. Meine Beziehungen in den Modellen wie folgt aussehen,

Organisation

public function projects() 
{ 
    return $this->hasMany('Project'); 
} 

Projekte

public function organisations() 
{ 
    return $this->belongsToMany('Organisation', 'organisation_id'); 
} 

Wie Sie ich eine Organisation kann viele Projekte haben sehen können. Ich kann keinen Grund sehen, warum ich folgende Fehlermeldung bekommen würde,

Call to undefined Methode Illuminate \ Database \ Abfrage \ Builder :: sync()

+0

Sind Sie sicher, dass Sie keine Spalte in der Tabelle für 'Organisation' mit' Projektnamen 'haben? –

+0

In der Organisationstabelle gibt es keine Spalte namens projects – Udders

Antwort

12

Da es viele zu viele Beziehung in beide Funktionen benötigen Sie belongsToMany verwenden, so sollten Sie verwenden:

public function projects() 
{ 
    return $this->belongsToMany('Project'); 
} 

statt:

public function projects() 
{ 
    return $this->hasMany('Project'); 
} 

sync() funktioniert nur für viele zu viele Beziehung