Laravel - Попытка получить доступ к смещению массива по значению типа null - PullRequest
0 голосов
/ 23 марта 2020

У меня есть проект на Laravel -5.8

public function store(StoreAppraisalGoalRequest $request)
{
  $appraisalStartDate = Carbon::parse($request->appraisal_start_date);
  $appraisalEndDate = Carbon::parse($request->appraisal_end_date);        
  $userCompany = Auth::user()->company_id;
  $employeeId = Auth::user()->employee_id;
  $identities = DB::table('appraisal_identity')->select('id','appraisal_name')->where('company_id', $userCompany)->where('is_current', 1)->first();
  $employees = DB::table('hr_employees')->select('id')->where('id', $employeeId)->first();
 try {
  $goal = new AppraisalGoal();
  $goal->goal_type_id             = $request->goal_type_id;
  $goal->appraisal_identity_id    = $request->appraisal_identity_id;
  $goal->employee_id              = $request->employee_id;  //$employeeId;   
  $goal->weighted_score           = $request->weighted_score;
  $goal->goal_title               = $request->goal_title;
  $goal->goal_description         = $request->goal_description;

     if ($request->appraisal_doc != "") {
         $appraisal_doc = $request->file('appraisal_doc');
         $new_name = rand() . '.' . $appraisal_doc->getClientOriginalExtension();
         $appraisal_doc->move(public_path('storage/documents/appraisal_goal'), $new_name);
        // $arr['appraisal_doc'] = $new_name;
         $goal->appraisal_doc = $new_name;
    }   
$goal->save();        

foreach ( $request->activity as $key => $activity){
    $startDate = Carbon::parse($request->start_date[$key]);
    $endDate = Carbon::parse($request->end_date[$key]);

    $goaldetail = new AppraisalGoalDetail();

    $goaldetail->kpi_description            = $request->kpi_description[$key];
    $goaldetail->appraisal_doc              = $request->application_doc[$key];
    $goaldetail->activity                   = $request->activity[$key];  
    $goaldetail->start_date                 = $startDate ->toDateTimeString();
    $goaldetail->end_date                   = $endDate->toDateTimeString();                  
    $goaldetail->appraisal_goal_id          = $goal->id;
    $goaldetail->appraisal_identity_id      = $goal->appraisal_identity_id;
    $goaldetail->employee_id                = $goal->employee_id;
    $goaldetail->save();
 }
$min_date = AppraisalGoalDetail::select('start_date')->where('appraisal_goal_id', $goal->id)->min('start_date');
$max_date = AppraisalGoalDetail::select('end_date')->where('appraisal_goal_id', $goal->id)->max('end_date');   
$parentid = AppraisalGoalType::select('parent_id')->whereNotNull('parent_id')->where('company_id', $userCompany)->where('id', $goal->goal_type_id)->first();

 $goal->update([
     'appraisal_start_date' => $min_date,
     'appraisal_end_date'   => $max_date,
     'parent_id'            => $parentid->parent_id
         ]);


    Session::flash('success', 'Appraisal Goal is created successfully');
    return redirect()->route('appraisal.appraisal_goals.index');
  } catch (Exception $exception) {
     Session::flash('danger', 'Appraisal Goal creation failed!');
     return redirect()->route('appraisal.appraisal_goals.index');
  }
}

При развертывании в Digital Ocean я обнаружил, что только

$goal = new AppraisalGoal();
$goal->goal_type_id             = $request->goal_type_id;
$goal->appraisal_identity_id    = $request->appraisal_identity_id;
$goal->employee_id              = $request->employee_id;  //$employeeId;   //$request->employees_id
$goal->weighted_score           = $request->weighted_score;
$goal->goal_title               = $request->goal_title;
$goal->goal_description         = $request->goal_description;

     if ($request->appraisal_doc != "") {
         $appraisal_doc = $request->file('appraisal_doc');
         $new_name = rand() . '.' . $appraisal_doc->getClientOriginalExtension();
         $appraisal_doc->move(public_path('storage/documents/appraisal_goal'), $new_name);
        // $arr['appraisal_doc'] = $new_name;
         $goal->appraisal_doc = $new_name;
    }   
   $goal->save();  

было сохранено в базе данных. Но

    $goaldetail = new AppraisalGoalDetail();

    $goaldetail->kpi_description            = $request->kpi_description[$key];
    $goaldetail->appraisal_doc              = $request->application_doc[$key];
    $goaldetail->activity                   = $request->activity[$key];  
    $goaldetail->start_date                 = $startDate ->toDateTimeString();
    $goaldetail->end_date                   = $endDate->toDateTimeString();                  
    $goaldetail->appraisal_goal_id          = $goal->id;
    $goaldetail->appraisal_identity_id      = $goal->appraisal_identity_id;
    $goaldetail->employee_id                = $goal->employee_id;
    $goaldetail->save();
 }

не был сохранен. Но в моей локальной системе все работает нормально.

Однако, когда я отлаживал с помощью:

dd ($ exception-> getMessage ());

и установите для debug на сервере значение true, я получил эту ошибку:

"Попытка получить доступ к смещению массива по значению типа null"

Как мне разрешить это?

Спасибо

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