Я запускаю следующий код,
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');
}
Как видите, у организации может быть много проектов. Я не вижу причины, по которой я получаю следующую ошибку:
Вызов неопределенного метода Illuminate \ Database \ Query \ Builder :: sync ()
Так как отношения «многие ко многим» в обеих функциях необходимо использовать belongsToMany
, так что вы должны использовать:
public function projects()
{
return $this->belongsToMany('Project');
}
вместо:
public function projects()
{
return $this->hasMany('Project');
}
sync()
работает только для многих, чтобы многие отношения
Других решений пока нет …