【问题标题】:Laravel Sync errorLaravel 同步错误
【发布时间】:2014-12-19 03:19:42
【问题描述】:

我正在运行以下代码,

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

【问题讨论】:

  • 您确定表中没有Organisation 的任何列,名称为projects 吗?
  • 组织表中没有名为projects的列

标签: php laravel eloquent relationships


【解决方案1】:

由于这两个函数是多对多关系,你需要使用belongsToMany,所以你应该使用:

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

代替:

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

sync() 仅适用于多对多关系

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    • 2010-10-20
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多