Преобразование даты углерода в метку времени mysql.
у меня есть столбец переменной timestamp в базе данных mysql. Попытка преобразовать временную метку углерода в то, что я могу ввести там, но Carbon::now()
возвращает только объект Carbon, и когда я пытаюсь использовать строку метки времени объекта Carbon, она не регистрируется в mysql.
public function store(CreateArticleRequest $request){
$input = $request->all();
var_dump($input); // JUST SO YOU CAN SEE
$input['published_at'] = Carbon::now();
var_dump($input); // JUST SO YOU CAN SEE
Article::create($input);
}
мой первый дамп var выглядит так:
array (size=4)
'_token' => string 'Wy67a4hWxrnfiGz61wmXfYCSjAdldv26wOJiLWNc' (length=40)
'title' => string 'ASDFasdf' (length=8)
'body' => string 'asdfasdf' (length=8)
'published_at' => string '2015-08-26' (length=10)
мой второй var-дамп такой.
столбец mysql, относящийся к" published_at", является переменной метки времени. Как я предположим, преобразовать это из углеродного объекта?
спасибо заранее.
3 ответов
вы также можете установить мутатор на вашей модели.
public function setPublishedAt($value)
{
$this->attributes['published_at'] = strtotime($value);
}
преобразовать в метку
$model -> setPublishedAt('2015-08-26'); // 1440572400
или вы можете просто преобразовать дату в метку времени с помощью strtotime
strtotime-разбор любого английского текстового описания datetime в метку времени Unix
надеюсь, что это поможет.
короткий ответ:toDateTimeString()
это то, что вы ищете:
$input['published_at'] = Carbon::now()->toDateTimeString();
посмотреть http://carbon.nesbot.com/docs/ дополнительные параметры, в том числе toDateString()
Если вы хотите просто даты, а не времени.
но еще лучший способ справиться с этим-позволить Laravel обрабатывать литье значения даты в/из углеродного объекта для вас. См.https://laravel.com/docs/5.4/eloquent-mutators#date-mutators.
проблема в вашей строке даты, например, у вас есть это:
public function setCrbDateAttribute($value)
{
$this->attributes['crb_date'] = \Carbon\Carbon::createFromFormat('d-m-Y h:i', $value);
}
теперь, если есть дата, как 10-12-2014, то эта ошибка произойдет, потому что час и минута отсутствует. Таким образом, вы убедитесь, что дата содержит все pars, а также убедитесь, что строка даты содержит - как разделитель не /.
другими словами, проверьте значение $перед использованием Carbon и убедитесь, что строка даты содержит точно такую же отформатированную строку, которую вы использовали в метод.
Это также происходит в методе доступа, поэтому сначала проверьте значение даты, прежде чем использовать его в Carbon::createFromFormat().
Если вы получаете дату из пользовательского ввода, проверьте дату перед ее использованием с помощью правила date или date_format: format, проверьте проверку здесь.
ответ ref: