Nit*_*mar 5 php laravel php-carbon laravel-5.4
我正在构建一个小应用程序,Laravel 5.4
我正试图从前端接收来自datepicker小部件的日期并将其解析为Carbon日期格式,如下所示:
Carbon\Carbon::parse($request->schedule)->toDateTimeString();
Run Code Online (Sandbox Code Playgroud)
继续我之前的问题:如何通过laravel中的Vuejs Datepicker格式化日期接收,我成功地将其添加到我的数据库中,并且在调用它时我在我的模型中放置一个访问器并尝试以diffForHumans()
格式获取日期前面的问题:一个两位数一个月找不到在Laravel数据丢失,这个作品每当我取模型完全正常的,直到在获取车型在控制器我不分配这个计划属性为任何其他变量,现在并使用以下内容分配值:
public function getData()
{
$user = Auth::user();
$summaries = InteractionSummary::all();
$meetings = [];
foreach($summaries as $summary)
{
$company = [];
$tempData = $summary->interaction->where('user_id', $user->id)->get()->first();
if($tempData)
{
$meeting = Interaction::find($tempData->id);
$tempData->schedule = $meeting->schedule;
$meetings[] = $tempData;
}
}
return response()->json(['meetings' => $meetings], 200);
}
Run Code Online (Sandbox Code Playgroud)
我得到了同样的错误:
无法找到两位数月份数据缺失
如果我这样做,同样的工作完全正常:
public function getFutureData()
{
$user = Auth::user();
$currentTime = Carbon::now();
$interactions = $user->interaction->where('schedule', '>=', $currentTime);
$meetings = [];
foreach($interactions as $interaction)
{
$interaction->meeting = $meeting;
$meetings[] = $interaction;
}
return response()->json(['interactions' => $meetings], 200);
}
Run Code Online (Sandbox Code Playgroud)
在我的名字模型中:Interaction
我正在定义我的属性,如下所示:
public function getScheduleAttribute($value)
{
return Carbon::parse($value)->diffForHumans();
}
Run Code Online (Sandbox Code Playgroud)
编辑
仅供参考:我有我的InteractionSummary
模特并且有以下关系:
public function interaction()
{
return $this->belongsTo('App\Interaction');
}
Run Code Online (Sandbox Code Playgroud)
最肯定的是,您的问题是由这一行引起的:
$tempData->schedule = $meeting->schedule;
Run Code Online (Sandbox Code Playgroud)
原因是,您设置了日期列(请参阅链接问题),如下所示:
protected $dates = [
'schedule', 'created_at', 'updated_at', 'deleted_at'
];
Run Code Online (Sandbox Code Playgroud)
因此,'schedule' 被视为日期。
当您通过$meeting->schedule检索您的日程安排日期时,该值由您的 mutator 修改,并以“1 小时前”之类的内容结束。
所以用 $tempData->schedule = $meeting->schedule; 您实际上是在尝试为 $tempData->schedule 设置无效日期。它会翻译为
$tempData->schedule = '1 hour ago';
Run Code Online (Sandbox Code Playgroud)
当您在日期数组中将 'schedule' 标记为日期时,Laravel 试图用 Carbon 解析它。它期望具有在模型的 $dateFormat 属性中指定的格式的日期(默认为 Ymd H:i:s)。
归档时间: |
|
查看次数: |
2796 次 |
最近记录: |