2014-10-23 2 views
8
나는 다음과 같은 코드를 실행하고

,Laravel 동기화 오류

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

    } 

나는 시도하고 동기화 $projects 때 다음과 같은 오류를 얻고있다하고, 배열은 다음과 같습니다

,

[0] => 6 그래서 아주 간단한 배열. 모델 나의 관계는 다음과 같이

기구

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

프로젝트

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

당신은 내가 조직 많은 프로젝트를 가질 수 있습니다 볼 수 있듯이. 나는 다음과 같은 오류가 발생 될 이유, 정의되지 않은 메서드를 분명히 \ 데이터베이스에

전화를 볼 수 없습니다 \ 쿼리 \ 빌더 :: 동기화() 그것의로

+0

'organisation'에'projects' 이름을 가진 열이 없습니까? –

+0

조직 테이블에 projects라는 열이 없습니다. – Udders

답변

12

다 - 많은 관계 두 기능은 당신이 belongsToMany를 사용해야합니다, 그래서 당신은 사용해야

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

대신 :

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

sync()은 다 대다 관계에서만 작동합니다.