2014-10-23 3 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'); 
} 

Как вы можете видеть, что организация может иметь много проектов. Я не вижу причин, почему я буду получать следующее сообщение об ошибке,

Вызов неопределенной метод Осветите \ Database \ Query \ Builder :: синхронизации()

+0

У вас нет столбцов в таблице для 'Organisation' с названием' projects'? –

+0

В таблице организации нет столбца, называемого проектами – Udders

ответ

12

Как это многие-ко-многим в обе функции вам нужно использовать belongsToMany, так что вы должны использовать:

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

вместо:

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

sync() работает только для многих отношений