Livewire Datatable Editable other table

134 Views Asked by At

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.
0

There are 0 best solutions below