I have a Gebruikers model (Dutch for users) and a Ateliers model (Dutch for workshop). There is a many to many relationship between them.
When saving a new Gebruiker you can check the Ateliers the gebruiker is attending.
In the Livewire 'controller':
public $selectedAtelier = [];
public $gebruiker;
public function saveGebruiker(){
$nieuwegebruiker = Gebruiker::create([
'first' => $this->gebruiker['first'],
'last' => $this->gebruiker['last'],
]);
$nieuwegebruiker->ateliers()->sync($this->selectedAtelier);
}
In the component:
<input type="text" wire:model="gebruiker.first">
<input type="text" wire:model="gebruiker.last">
@foreach ($ateliers as $atelier)
<input wire:model="selectedAtelier" value="{{ $atelier->id }}"
type="checkbox"
id="{{ $atelier->id }}"><label>{{$atelier-name}}</label>
@endforeach
This works fine. the gebruiker is saved in the Gebruiker table and the ateliers are saved in the pivot table.
When editing the specific gebruiker, how can I make the checkboxes for the ateliers that are saved in the pivot table checked?
CodePudding user response:
I'll try to reproduce some of the logic you need based in the code you share here
// in component
public function someLoadMethodOnEdit()
{
$this->selectedAtelier = $this->gebruiker->ateliers()->pluck('id')->map(
function($group) {
return strval($group);
})->toArray();
}
// in blade
@foreach ($ateliers as $atelier)
<input wire:model="selectedAtelier" value="{{ $atelier->id }}"
type="checkbox" @if(in_array($atelier->id,$selectedAtelier)) checked @endif
id="{{ $atelier->id }}" wire:key="aterlier-checkbox-{{ $atelier->id }}"><label>{{$atelier-name}}</label>
@endforeach