Laravel - Как выполнить пакетное обновление на основе условия - PullRequest
0 голосов
/ 18 февраля 2020

Я использую Laravel -5,8 для своего веб-приложения. У меня есть эти строки кода:

Модель

class AppraisalGoal extends Model
{
   protected $table = 'appraisal_goals';

   protected $fillable = [
          'goal_type_id',
          'appraisal_identity_id',
          'employee_id',
          'company_id',
          'is_published',
          'is_approved',
          'weighted_score',
          'employee_comment',
          'line_manager_comment',
          'goal_title',
          'appraisal_doc',
          'appraisal_start_date',
          'appraisal_end_date',
      ];

public function goaltype()
{
 return $this->belongsTo('App\Models\Appraisal\AppraisalGoalType','goal_type_id');
}


  public function appraisalgoaldetail(){
     return $this->hasMany('App\Models\Appraisal\AppraisalGoalDetail');
  }
}

class AppraisalGoalDetail extends Model
{  
    protected $table = 'appraisal_goal_details';
    protected $fillable = [
          'name',
          'company_id',
          'appraisal_goal_id',
          'kpi_description',
          'appraisal_doc',
          'activity',
          'start_date',
          'end_date',
      ];

 public function appraisalgoal()
 {
     return $this->belongsTo('App\Models\Appraisal\AppraisalGoal');
 }    
}

Контроллер

public function index()
{
    $userCompany = Auth::user()->company_id;
    $userEmployee = Auth::user()->employee_id;
    $identities = DB::table('appraisal_identity')->select('id')->where('company_id', $userCompany)->where('is_current', 1)->first();
    $linemanager = DB::table('hr_employees')->select('line_manager_id')->where('employee_id', $userEmployee)->first();
    $linemanageremail = DB::table('hr_employees')->select('email')->where('id', $userEmployee)->first();
    $goals = AppraisalGoal::where('employee_id', $userEmployee)->where('appraisal_identity_id', $identities->id)->get();
}

просмотр

<div class="card-body">
    <div class="table-responsive">
        <table class=" table table-bordered table-striped table-hover datatable">
            <thead>
                <tr>
                    <th width="10%">
                        Goal Type
                    </th>
                    <th width="20%">
                        Goal Title & Description
                    </th>
                    <th class="text-center" width="40%">
                        Activities & KPIs
                    </th>
                    <th width="11%">
                        Start Date - End Date
                    </th>
                    <th>
                        Weight
                    </th>  
                    <th>
                        Status
                    </th>  
                    <th>
                        &nbsp;
                    </th>
                </tr>
            </thead>
            <tbody>
                @foreach($goals as $key => $goal)
                        <td>
                            <!--{{ $goal->goaltype ? $goal->goaltype->name : 'Uncategorized' }}-->
                            {{$goal->goaltype->name ?? '' }}
                        </td>
                        <td>
                            <b>{{$goal->goal_title ?? '' }}</b>
                            <br><br>
                            {!! Str::words($goal->goal_description, 20, '') !!}
                            @if(str_word_count($goal->goal_description) > 20)
                              <a class="btn btn-xs btn-info" href="{{ route('appraisal.appraisal_goals.show', $goal->id) }}"> Show more </a>
                            @endif                                 
                        </td>                          
                        <td>
                                        <table class="table">
                                            <thead>
                                            <tr>
                                                <th width="50%">
                                                    Activity
                                                </th>
                                                <th width="50%">
                                                    KPIs
                                                </th>
                                            </tr>
                                            </thead>
                                            <tbody>
                                            @foreach($goal->appraisalgoaldetail as $key => $appraisalgoaldetail)
                                                <tr>
                                                    <td>
                                                        {{$key+1}}. {{$appraisalgoaldetail->activity}}
                                                    </td>

                                                    <td>
                                                        {{$appraisalgoaldetail->kpi_description}}
                                                    </td>
                                                </tr>
                                            @endforeach
                                            </tbody>
                                        </table>
                        </td>

                        <td>

                            {{Carbon\Carbon::parse($goal->appraisal_start_date)->format('M d, Y') ?? '' }} - {{Carbon\Carbon::parse($goal->appraisal_end_date)->format('M d, Y') ?? '' }}
                        </td>  
                        <td>
                            {{$goal->weighted_score ?? '' }}
                        </td>                            
                        <td>
                            @if ($goal->is_approved == 2)
                                <span class="badge bg-success" >Approved</span>
                            @elseif ($goal->is_approved == 1)
                                <span class="badge bg-info">Awaiting Approval</span>
                            @else
                                <span class="badge bg-danger">Draft</span>                                    
                            @endif
                        </td>
                        <td>                               
                            @can('appraisal_goal_show')
                                <div class="btn-group">
                                    <a title={{ trans('global.detail') }}  href="{{ route('appraisal.appraisal_goals.show', $goal->id) }}"  class="btn btn-primary btn-sm"><i class="fa fa-eye"></i>
                                    </a>
                                </div>                                 
                            @endcan
                            @can('appraisal_goal_edit')
                                <div class="btn-group">
                                    <a title={{ trans('global.edit') }} href="{{ route('appraisal.appraisal_goals.edit', ['id'=>$goal->id]) }}" class="btn btn-info btn-sm"><i class="fa fa-edit"></i></a>
                                </div> 
                            @endcan
                            @can('appraisal_goal_delete')
                                <div class="btn-group">
                                <a title={{ trans('global.delete') }} class="btn btn-danger btn-sm" data-toggle="modal" data-target="#confirm-delete{{ $goal->id }}" data-original-title="Close"> 
                                    <span style="color:white;"><i class="fa fa-fw fa-trash"></i></span>
                                </a>
                                </div>                                 
                            @endcan   

                        </td>

                </tr>
                @endforeach 
            </tbody>
        </table>
    </div>
         <div>
            <button type="submit" class="btn btn-primary"><i class="fas fa-arrow-right"></i> {{ trans('global.submit') }}</button>
        </div>           
</div>

update on submit

Когда я нажимаю кнопку отправки:

  1. Я хочу, чтобы приложение проверяло таблицу appraisal_goals на основе текущей записи в контроллере индекса. Если is_published равно 0, оно должно измениться на 1

  2. Отправлять уведомления в $ linemanageremail, что $ userEmployee опубликовал $ goal-> goal_title (каждый из них) для $ identity.

Как мне изменить мой контроллер и просмотр для достижения этих целей?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...