2014-10-23 19 views
8

używam następujący kod,laravel Sync błąd

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); 

    } 

ja otrzymuję następujący błąd, gdy próbuję i synchronizacja $projects,

tablica wygląda tak,

[0] => 6 tak bardzo prosta tablica. Moje relacje w modelach wyglądać tak,

Organizacja

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

Projekty

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

Jak widzisz, że organizacja może mieć wiele projektów. Nie widzę powodu, dlaczego miałbym być otrzymuję następujący błąd,

Zaproszenie do metody nieokreślone Illuminate \ database \ Zapytanie \ Builder :: sync()

+0

Czy na pewno nie ma żadnej kolumny w tabeli dla "Organizowanie" z nazwą "projekty"? –

+0

W tabeli organizacji nie ma kolumny o nazwie Projekty – Udders

Odpowiedz

12

Jak to wiele do wielu relacji w obydwie funkcje trzeba użyć belongsToMany, więc należy używać:

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

zamiast:

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

sync() działa tylko dla wielu do wielu relacji