Подтвердить что ты не робот

Вставка данных created_at с помощью Laravel

Я не могу вставлять данные created_at в таблицу базы данных с помощью Laravel. Я пытаюсь получить эти данные из POST, а затем попытаюсь сохранить их в базе данных.

Сейчас я делаю вот так:

$create_dt = date("Y-m-d H:i:s A", strtotime($_POST['post_date']." ".$_POST['post_time']));
$name = $_POST['name'];

$post = new Post();
$post->name = $name;
...
$post->created_at = $create_dt;
$post->save();

Но это дает ошибку:

Uncaught exception 'InvalidArgumentException' with message in Carbon.php

и

Unexpected data found. Unexpected data found. Data missing in Carbon.php

Как я могу это решить? Нужно ли устанавливать $timestamps в моих моделях на false? (Я действительно не хочу этого делать, потому что я в порядке с тем, как он автоматически вставляет updated_at)

4b9b3361

Ответ 1

В вашей модели User добавьте следующую строку в класс User:

protected $timestamps = true;

Теперь, когда вы сохраняете или обновляете пользователя, Laravel автоматически обновляет поля created_at и updated_at.


Обновление:
Если вы хотите установить созданное вручную, вы должны использовать формат даты Y-m-d H:i:s. Проблема в том, что используемый вами формат не совпадает с тем, который использует Laravel для поля created_at.

Ответ 2

Вы можете вручную установить это с помощью Laravel, просто не забудьте добавить 'created_at' в ваш $fillable array:

protected $fillable = ['name', 'created_at']; 

Ответ 3

$data = array();
$data['created_at'] =new \DateTime();
DB::table('practice')->insert($data);

Ответ 4

В настоящее время (Laravel 5.4) способ достижения этого:

$model = new Model();
$model->created_at = Carbon::now();
$model->save(['timestamps' => false]);