Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Kazuto's avatar

Can't figure out sync().

Hey guys,

I'm fairly new to Laravel and Blade, startet a few weeks ago. Currently I'm working on a CMS for a friend/customer.

What I plan on doing: Create Teams > Create Members >Edit Team and attach members.

I've created three tables for this: teams, members and team_member.

The team_member table consists of:

Schema::create('team_member', function (Blueprint $table) {
            $table->unsignedInteger('team_id');
            $table->unsignedInteger('member_id');


            $table->foreign('member_id')->references('id')->on('members')
                ->onUpdate('cascade')->onDelete('cascade');

            $table->foreign('team_id')->references('id')->on('teams')
                ->onUpdate('cascade')->onDelete('cascade');

            $table->primary(['team_id', 'member_id']);
        });

and I have a hidden input named "member".

<label for="roles" class="label">Mitglieder</label>
<input type="hidden" name="members" :value="memberSelected">

<b-checkbox-group v-model="memberSelected">
  @foreach ( $members as $member )
    <div class="field">
      <b-checkbox :custom-value="{{ $member->id }}">{{ $member->nickname }}</b-checkbox>
    </div>
  @endforeach
</b-checkbox-group>

<script>
  var app = new Vue({
    el: '#app',
      data: {
        memberSelected: {!! $team->members->pluck('id') !!}
      }
    });
</script>

Inside my controller:

if ($request->members) {
  $team->roles()->sync($id,(explode(',', $request->members)));
}
0 likes
1 reply
aurawindsurfing's avatar

Just from documentation:

The sync method accepts an array of IDs to place on the intermediate table

$user->roles()->sync([1, 2, 3]);

You are not providing an array. Maybe this will do the trick?

if ($request->members) {
  $team->roles()->sync([$id,(explode(',', $request->members))]);
}

Please or to participate in this conversation.