2014-10-23 16 views
8

sto facendo funzionare il seguente codice,laravel Sync errore

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

    } 

sto sto ottenendo il seguente errore quando provo e la sincronizzazione $projects,

la matrice si presenta così,

[0] => 6 così una matrice molto molto semplice. I miei rapporti nei modelli di simile a questa,

Organizzazione

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

Progetti

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

Come potete vedere ho un'organizzazione può avere molti progetti. Non riesco a vedere un motivo per cui sarei ottenendo il seguente errore,

Chiama per metodo non definito Illuminate \ Database \ Query \ Builder :: sync()

+0

Sei sicuro di non avere alcuna colonna nella tabella per "Organizzazione" con il nome di 'progetti'? –

+0

Non c'è una colonna denominata progetti nella tabella dell'organizzazione – Udders

risposta

12

Come è molti a molti rapporti in entrambe le funzioni è necessario utilizzare belongsToMany, così si dovrebbe usare:

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

invece di:

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

sync() funziona solo per molti a molti rapporti