【问题标题】:Laravel put null in created_at and updated_at while inserting new recordLaravel 在插入新记录时将 null 放入 created_at 和 updated_at
【发布时间】:2016-06-13 11:42:30
【问题描述】:

我不知道为什么,但是当我想插入一些东西时:

users::insert([
    'first_name' => $first_name,
    'last_name' => $last_name,
    'remember_token' => $remember_token,
]);

它只是将 NULL 插入 created_at 和 updated_at 列。 我试过这些:

'create_at' => time(),
'updated_at' => time(),

'create_at' => '',
'updated_at' => '',

'create_at' => TRUE,
'updated_at' => TRUE,

但它们都不起作用,只是 TRUE 输入 0000-00-00 00:00:00。

【问题讨论】:

  • 也许您在模型中不小心将 $timestamps 设置为 false?
  • 谢谢,它应该在没有指定的情况下工作,但我也将其设置为 true。
  • 它开始工作了吗?
  • 不,为什么我什么都没做就开始?
  • 您要创建新记录吗?

标签: laravel null


【解决方案1】:

只有当您像这样使用 Eloquent 时,才会自动分配时间戳列(created_at 和 updated_at):

$user = new \App\User;
$user->first_name = $first_name;
$user->last_name = $last_name;
$user->save();

当您使用查询生成器时,您必须自己为created_atupdated_at 赋值:

DB::table('users')->insert([
    'first_name' => $first_name,
    'last_name' => $last_name,
    'created_at' => \Carbon\Carbon::now(),
    'updated_at' => \Carbon\Carbon::now(),
]);

希望这能解决您的问题。

【讨论】:

  • 不,我用的第一个和你输入的完全一样,又没用 :(
【解决方案2】:

在模型中你应该添加这段代码,

public $timestamps = true;

created_at 和 updated_at 会自动更新

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多