2014-10-23 25 views
8
Aşağıdaki kodu çalıştırıyorum

,laravel Senkronizasyon hatası

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

    } 

denemek ve senkronize $projects zaman aşağıdaki hatayı alıyorum am, dizi şöyle

,

[0] => 6 yüzden çok çok basit bir dizi. modellerinde Benim ilişkileri, şuna benzer

Organizasyonu

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

Projeler

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

Eğer ben bir organizasyon sayıda proje olabilir görebileceğiniz gibi. Ben aşağıdaki hatayı almak olacaktır bir neden, tanımsız yöntem Illuminate \ Veritabanı

Çağrısı göremiyorum \ Sorgu \ Oluşturucu :: senkronizasyon() bu kadar gibi

+0

"Projeler" ile "Organizasyon" için herhangi bir sütunda hiç sütun olmadığından emin misiniz? –

+0

Kuruluş tablosunda proje adı verilen sütun yok – Udders

cevap

12

çok-çok ilişki Her iki işlevler belongsToMany kullanmak gerekir, bu yüzden kullanmalısınız:

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

yerine:

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

sync() sadece birçok ilişki için çalışıyor