Syntax for editable() column to trigger my function. Here my scenario I have 3 tables joins and I preferred that all tables are editable. I can edit the primary table but the remaining table no luck.
public function builder()
{
return pre_register::query()
->join('pre_register_programsubj',function($subj){
$subj->on('pre_register.id','=','pre_register_programsubj.prereg_id')
->where('sched_id',$this->schedID)
->where('pre_register_programsubj.reg_status',1); })
->leftJoin('stud_term_grades',function($grades){
$grades->on('pre_register.aisID','=','stud_term_grades.aisID');
})
->leftJoin('emp_info',function ($instr){
$instr->on('instrAISid','=','emp_info.user_id');
})
->select(['pre_register.id','pre_register.last_name','pre_register.mid_name','pre_register.first_name','pre_register.aisID','pre_register.educ','stud_term_grades.prelim','stud_term_grades.midterm','stud_term_grades.prefinal','stud_term_grades.final',DB::raw("CONCAT(emp_info.firstname,' ',emp_info.lastname) as instr")]);
}
public function columns()
{
$canEdit=true;
return [
NumberColumn::name('id')
->label('ID')
->sortBy('id'),
Column::name('last_name')->editable($canEdit)
->label('Last Name')->defaultSort('ASC'),
Column::name('first_name')
->label('First Name'),
Column::name('mid_name')
->label('Middle Name'),
Column::name('stud_term_grades.prelim')
->label('Prelim')->editable($canEdit),
Column::name('stud_term_grades.midterm')->editable($canEdit)
->label('Midterm'),
Column::name('stud_term_grades.prefinal')->editable($canEdit)
->label('Prefinal'),
Column::name('stud_term_grades.final')->editable($canEdit)
->label('Final'),
];
}
In livewire powergrid I use this function onUpdateEditable() to CreateOrUpdate my other Table. I want to ask what is my approach or syntax in editable() if I use the Livewire Datatables to have same effect like this in powergrid.
public function onUpdatedEditable(string $id, string $field, string $value): void
{
$stud=pre_register::select(['aisID','last_name','first_name'])->find($id);
if(empty($stud->aisID)){
$this->notification()->error(
$title = 'Opps something went wrong!',
$description = 'Not found AIS number, please verify the registration.'
);
}
else{
$m=StudTermGrades::query()->updateOrCreate([
'aisID'=>$stud->aisID,
'schedID'=>$this->schedID ],[
$field=>strtoupper($value),
'instrAISid'=>Auth()->user()->id
]);
if($m==true){
$this->notification()->success(
$title = 'Grade saved: '.ucwords($stud->first_name.' '. $stud->last_name),
$description = ucwords($field) .': '.$value
);
if(empty($value)) {
$this->notification()->error(
$title = 'Warning: '.ucwords($stud->first_name.' '. $stud->last_name),
$description = 'You have remove the term grades in '. ucwords($field)
);
}
// $this->fillData();
}
}
}```
I already tried using other datatables and tried to see if it work similar in result. I expect a simple syntax or reference.