2016-11-08 16 views
0

私は2つのテーブルを持っていました。 driverとpart_time_availableを同じ形式で使用すると、driver type = parttimeを選択すると、part_time_availableフィールド(day、start_time、end_time)が表示されます。保存時の条件laravel

ユーザーがフルタイムを選択した場合の条件。 part_time_availableフィールドはデータベースに格納されませんでした。私はforeachのを実行する前に、それはそれは非常勤だかどうかチェックする必要がある意味

public function saveHandler(Request $request, $obj) 
{ 
    try { 
     DB::beginTransaction(); 
      $obj->fill($request->all()); 
      if (!$obj->save()) { 
       throw new ValidationException($obj->errors()); 
      } 
      foreach($request->parttimeAvailabilities as $pta) { 
       \Log::info($pta); 
       if (empty($pta['id'])) { 
        $parttimeAvailability = new PartTimeAvailability(); 
       } 
       else { 
        $parttimeAvailability = PartTimeAvailability::find($pta['id']); 
       } 
       $parttimeAvailability->driver()->associate($obj); 
       $pta['driver_id'] = isset($pta['driver_id']); 
       $parttimeAvailability->day = $pta['day']; 
       $parttimeAvailability->start_time = isset($pta['start_time']) ? $pta['start_time'] : '00:00:00'; 
       $parttimeAvailability->end_time = isset($pta['end_time']) ? $pta['end_time'] : '00:00:00'; 
       $parttimeAvailability->available = isset($pta['available']); 
       $parttimeAvailability->save(); 
      }; 
      $obj->save(); 
      if (!$parttimeAvailability->save()) { 
       throw new ValidationException($parttimeAvailability->errors()); 
      } 
     DB::commit(); 
     return $this->sendSuccessResponse($request); 
    } catch (ValidationException $e) { 
     DB::rollback(); 
     \Log::error($e->errors); 
     return $this->sendErrorResponse($request, $e->errors); 
    } catch (Exception $e) { 
     DB::rollback(); 
     \Log::error($e->getMessage()); 
     return $this->sendErrorResponse($request,'Unable to process. Please contact system Administrator'); 
    } 

} 

はここに、これまでの私のsavehandlerコードです。

答えて

0

foreachループ全体の前に条件を指定できます。例えば:

if($request->get('driver_type') != 'full_time'){ 
foreach loop 
}