Reputation: 1323
In my Laravel 5.8 project, When the user submits the form to create a new post it is appering this error:
[2020-06-26 09:16:52] production.ERROR: Exception: DateTime::__construct(): Failed to parse time string (2) at position 0 (2): Unexpected character in /var/www/html/laravelapp/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php:81
Stack trace:
#0 /var/www/html/laravelapp/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php(81): DateTime->__construct('2', Object(Carbon\CarbonTimeZone))
#1 /var/www/html/laravelapp/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php(174): Carbon\Carbon->__construct('2', NULL)
#2 /var/www/html/laravelapp/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php(201): Carbon\Carbon::rawParse('2', NULL)
#3 /var/www/html/laravelapp/app/Http/Controllers/Appraisal/AppraisalGoalsController.php(333): Carbon\Carbon::parse('2')
#4 [internal function]: App\Http\Controllers\Appraisal\AppraisalGoalsController->store(Object(App\Http\Requests\Appraisal\AppraisalGoal\StoreAppraisalGoalRequest))
Model
protected $fillable = [ 'name', 'start_date', 'end_date', ];
protected $dates = [
'start_date',
'end_date'
];
Request Rules:
'start_date.*' => [
'required',
'date',
'date_format:Y-m-d',
],
'end_date.*' => [
'required',
'date',
'date_format:Y-m-d',
'after:start_date.*'
],
Controller
foreach(Arr::wrap($request->activity) as $key => $activity){
$startDate = Carbon::parse($request->start_date[$key]);
$endDate = Carbon::parse($request->end_date[$key]);
$goaldetail = new AppraisalGoalDetail();
$goaldetail->start_date = $startDate ->toDateString();
$goaldetail->end_date = $endDate->toDateString();
$goaldetail->save();
}
view:
<td>
<input type="date" name="start_date[]" placeholder="dd/mm/yyyy" class="form-control start_date" min="{{Carbon\Carbon::now()->firstOfYear()->format('Y-m-d')}}" max="{{Carbon\Carbon::now()->lastOfYear()->format('Y-m-d')}}">
</td>
<td>
<input type="date" name="end_date[]" placeholder="dd/mm/yyyy" class="form-control end_date" min="{{Carbon\Carbon::now()->firstOfYear()->format('Y-m-d')}}" max="{{Carbon\Carbon::now()->lastOfYear()->format('Y-m-d')}}">
</td>
How do I resolve this?
Upvotes: 0
Views: 2148
Reputation: 121
Log $request->start_date[$key] inside your loop and check the log file inside storage/logs to see the result.
\Log::info($request->start_date[$key]);
The Carbon::parse() function is not receiving data in the format it expects.
Also, remove the space before the variable name and the ->toDateString() function on your line
$startDate ->toDateString();
Upvotes: 0