我正在运行以下代码,
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()
答案 0 :(得分:15)
由于两个函数中的多对多关系,您需要使用belongsToMany
,因此您应该使用:
public function projects()
{
return $this->belongsToMany('Project');
}
而不是:
public function projects()
{
return $this->hasMany('Project');
}
sync()
仅适用于多对多关系