mafortis
mafortis

Reputation: 7138

laravel sync can't save data

I am trying to use sync method in pivot relationship but it does not save data correctly.

Logic

  1. Organization can have many admins
  2. user can be admin of 1 organization only

Tables

  1. users
  2. organizations
  3. organization_admins // saves organization_id and user_id

Models

User

public function organization()
{
    return $this->hasOne(Organization::class, 'superAdmin_id', 'id');
}

public function organizationAdmins()
{
    return $this->hasOne(OrganizationAdmin::class, 'organization_admins', 'user_id', 'id');
}

Organization

public function superAdmin()
{
    return $this->belongsTo(User::class, 'superAdmin_id', 'id');
}
public function admins()
{
    return $this->belongsToMany(OrganizationAdmin::class, 'organization_admins', 'organization_id', 'id');
}

OrganizationAdmin

public function organization()
{
    return $this->belongsToMany(Organization::class, 'organization_admins', 'id', 'organization_id');
}

public function user()
{
    return $this->belongsTo(User::class);
}

Controller

public function update(Request $request, $id)
{
    //...
    $organization->save();
    $admins = $request->input('user_id');
    $organization->admins()->sync($admins); //saving admins in pivot table
}

Result

This is what saves in database info of user wont save

one

Any idea?

Upvotes: 2

Views: 1744

Answers (2)

bhavinjr
bhavinjr

Reputation: 1763

Use this

public function admins()
{
    return $this->belongsToMany(OrganizationAdmin::class, 'organization_admins', 'organization_id', 'user_id')->withTimestamps();
}

For more information read Many to many eloquent relationships

Upvotes: 0

Davit Zeynalyan
Davit Zeynalyan

Reputation: 8618

Fix this

Organization

public function admins()
{
    return $this->belongsToMany(OrganizationAdmin::class, 'organization_admins', 'organization_id', 'user_id');
}

Upvotes: 1

Related Questions