Php Laravel无法同步多对多关系

Php Laravel无法同步多对多关系,php,database,laravel,relational-database,eloquent,Php,Database,Laravel,Relational Database,Eloquent,我正在尝试保存到我的数据库,作为保存的一部分,我正在尝试同步我的多对多关系,但是我从API中得到以下错误: "BadMethodCallException","message":"Call to undefined method Illuminate\\Database\\Query\\Builder::sync()" 我本以为这是因为我的模型中的关系不是多对多的,所以无法同步,但它们在我看来是正确的 class Organisation extends Eloquent { //Organ

我正在尝试保存到我的数据库,作为保存的一部分,我正在尝试同步我的多对多关系,但是我从API中得到以下错误:

"BadMethodCallException","message":"Call to undefined method Illuminate\\Database\\Query\\Builder::sync()"
我本以为这是因为我的模型中的关系不是多对多的,所以无法同步,但它们在我看来是正确的

class Organisation extends Eloquent {

//Organsiation __has_many__ users (members)
public function users()
{
    return $this->belongsToMany('User')->withPivot('is_admin');
}

//Organisation __has_many__ clients
public function clients()
{
    return $this->belongsToMany('Client');
}

//Organisation __has_many__ teams
public function teams()
{
    return $this->belongsToMany('Team');
}

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

}

成功保存后,我正在运行同步

if(isset($members)) {
    $organisation->users()->sync($members);
}
各位议员当然已定。组织的创建方式如下:

public function create()
{
    //
    $postData = Input::all();

    $rules = array(
        'name' => 'required',
    );  

    $validation = Validator::make(Input::all(), $rules);

    if($validation->fails()) {

        return Response::json( $validation->messages()->first(), 500);

    } else {

        $organisation = new Organisation;

        // Save the basic organistion data.
        $organisation->name = $postData['name'];
        $organisation->information = $postData['information'];
        $organisation->type = 'organisation';

        /*
        * Create an array of users that can used for syncinng the many-to-many relationship
        * Loop the array to assign admins to the organisation also.
        */
        if(isset($postData['members'])) {

            $members = array();

            foreach($postData['members'] as $member) {
                if(isset($postData['admin'][$member['id']]) && $postData['admin'][$member['id']] == "on") {
                    $members[$member['id']] = array(
                        'is_admin' => 1
                    );
                } else {
                    $members[$member['id']] = array(
                        'is_admin' => 0
                    );
                }
            }

        }

        /*
        * Create an array of clients so we can sync the relationship easily
        *
        */
        if(isset($postData['clients'])) {

            $clients = array();
            foreach($postData['clients'] as $client) {
                $clients[] = $client['id'];
            }

        }

        /*
        * Create an array of teams so we can sync the relationship easily
        *
        */

        if(isset($postData['teams'])) {

            $teams = array();

            foreach($postData['teams'] as $team) {
                $teams[] = $team['id'];
            }

        }

        /*
        * Create an array of projects so we can sync the relationship easily
        *
        */
        if(isset($postData['projects'])) {

            $projects = array();

            foreach($postData['projects'] as $project) {
                $projects[] = $project['id'];
            }
        }


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

        } else {

            return Response::make("Something has gone wrong", 500);

        }



    }

}

我查找了一段时间,没有发现任何问题。我正在查看您建议的第一次同步,但我再次查看,我认为问题在于没有在此处同步用户。问题可能是:

if(isset($projects)) {
   $organisation->projects()->sync($projects);
}
您正在尝试对1对多关系使用同步,因为您是这样定义的:

return $this->hasMany('Project');
因此,如果可能是多对多关系,请将此处的多更改为归属关系,或者不对$projects使用sync here,因为它仅适用于多对多关系。

您应该在此处显示什么是$organization。如何创建它。
return $this->hasMany('Project');