【问题标题】:Save custom timestamp column to db after the row has been created创建行后将自定义时间戳列保存到数据库
【发布时间】:2018-10-17 07:15:44
【问题描述】:

我的数据库中有一个表,其中包含一个可为空的时间戳列。

$table->timestamp('custom_timestamp')->nullable();

创建数据库中的行时,此列将为空。稍后当用户执行此特定操作时,我想使用用户执行此操作时的时间戳更新此列。

我的问题:将自定义时间戳添加到此列的语法是什么?

伪代码说明:

$myObject->custom_timestamp = *AD THE CURRENT TIME*;
$myObject->save();

编辑: 如果您对看似合理的问题投了反对票,请在 cmets 中说明您的担忧

【问题讨论】:

  • 在这种情况下,最好在该字段上使用ON UPDATE CURRENT_TIMESTAMP

标签: laravel eloquent laravel-query-builder


【解决方案1】:

你可以像这样生成时间戳:

use Carbon\Carbon;
$myObject->custom_timestamp = Carbon::now()->toDateTimeString();

口才

$myObject->custom_timestamp = $myObject->freshTimestampString();

【讨论】:

    【解决方案2】:

    您可以使用Carbon library 处理与日期时间相关的问题。如果要设置用户操作的当前时间,请执行以下操作。

    $object->custom_timestamp = Carbon::now();
    $object->save();
    

    或者

    $object->update(['custom_timestamp' => Carbon::now() ]);
    

    要在您的代码中使用 Carbon,请在 <?php 之后添加这一行

    use Carbon\Carbon;
    

    如果 Carbon 尚未在您的项目中,则通过运行以下命令添加库:

    $ composer require nesbot/carbon
    

    你不需要仅仅为了任务而使用这个库,但我真的很喜欢这个强大的库并推荐。

    【讨论】:

      【解决方案3】:

      使用 laravel 碳。您还可以格式化要保存的日期。在这里阅读更多:carbon

      use Carbon\Carbon;
      $now = Carbon::now();
      $myObject->custom_timestamp = $now; // 2018-10-16 22:02:28
      $myObject->save();
      

      【讨论】:

        猜你喜欢
        • 2021-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多