[英]Strange Date returned from laravel
我正在向數據庫發布日期。 列類型為TIMESTAMP,但無論我發送什么,laravel都不會轉換日期。 我已經手動檢查了Carbon :: parse()可以格式化我正確發送的日期,這很好。
發布日期示例: { "interview_date": "18 December 2015 - 14:24" }
在數據庫中0000-00-00 00:00:00
為: 0000-00-00 00:00:00
返回為: { "interview_date": "-0001-11-30 00:00:00" }
我已經設置了protected $dates = ['interview_date'];
在我的Laravel模型中
我約會發生了什么事? 任何幫助將不勝感激。
謝謝
喬
更新:模型/控制器/ Laravel 5.1
<?php
namespace App\Clients;
use AlgoliaSearch\Laravel\AlgoliaEloquentTrait;
use Illuminate\Database\Eloquent\Model;
class Member extends Model
{
use AlgoliaEloquentTrait;
public $primaryKey = "m_id";
protected $dates = ['interview_date'];
public $timestamps = false;
public static $objectIdKey = 'member_lead_trace';
public $indices = ['dev_leads'];
protected $casts = [
'interview_notes_received' => 'boolean',
'interview_complete' => 'boolean',
];
public function leads()
{
return $this->hasOne('App\Lead', 'id', 'member_lead_trace');
}
public function personal()
{
return $this->hasOne('App\Personal', 'mem_id', 'm_id');
}
public function wants()
{
return $this->hasOne('App\Want', 'mem_id', 'm_id');
}
public function photos()
{
return $this->hasMany('App\Photo', 'mem_id', 'm_id');
}
public function attributes()
{
return $this->hasMany('App\Attribute', 'mem_id', 'm_id');
}
public function financial()
{
return $this->hasOne('App\Financial', 'mem_id', 'm_id');
}
public function profile()
{
return $this->hasOne('App\Profile', 'mem_id', 'm_id');
}
}
控制器功能
public function update(Request $request)
{
$data = json_decode($request->data, true);
//return Carbon::parse($request->interview_date);
try {
return Member::where('member_lead_trace', $request->user)->update($data);
} catch (Exception $e) {
echo $e->getMessage();
}
}
使用修補程序運行Carbon時,在您的示例中顯示的時間看來解析方法似乎不起作用
Carbon::parse('18 December 2015 - 14:24');
消息'DateTime :: __ construct():未能解析位置17(-)處的時間字符串(2015年12月18日-14:24):意外字符'異常
但是刪除-它可以正確解析
Carbon::parse('18 December 2015 14:24');
返回有效的Carbon實例
Carbon\Carbon {#673 +"date": "2015-12-18 14:24:00.000000"
+"timezone_type": 3 +"timezone": "UTC" }
刪除-的一種替代方法是指定可以像這樣完成的格式
Carbon::createFromFormat('d F Y - G:i', '18 December 2015 - 14:24');
這是假設您在白天和小時中都有前導零,如果不是這樣,請參閱格式選項 。
更新:
在查看了您的代碼並查看了Laravel所做的事情之后,我認為我們一直在錯誤地假設Laravel會自動找出日期格式。 我很高興被證明是錯誤的。
但是我想出的解決方案似乎是可行的
public function setInterviewDateAttribute($value)
{
$this->attributes['interview_date'] = Carbon::createFromFormat('d F Y - H:i', $value)->toDateString();
}
mysql中日期的默認格式為YYYY-mm-dd HH:MM:SS
。
您只需要使用這種格式即可。
因此,在插入數據之前,請像這樣轉換日期,
$d = "date in other format";
$date =date("Y-m-d H:i:s,strtotime($d));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.