【问题标题】:generate unique id based on timestamp laravel 5根据时间戳 laravel 5 生成唯一 id
【发布时间】:2017-01-23 12:35:30
【问题描述】:

我想根据 laravel 中的时间戳创建 uniqueid。 在 laravel 中,时间戳变成 2 列,即 created_at 和 updated_at。 像这样timestamps laravel

我想将 created_at 和 updated_at 列组合为唯一 ID,不带破折号 (-) 和 (:)。 示例输出(屏幕截图中的第一行):2016091510453920160915104539

我将此代码用于 $transid 列:

public function insertFund($request,$lender, $type)
{
    $transid = timestamp();  
    $fund = $this->fund->create([
        'transid' => $transid
    ]);
    return $fund;
}

但是,提交时出现错误。 可以在这里写代码吗?

提前致谢。

【问题讨论】:

  • 您遇到什么错误? DB表中的数据类型transid列是什么?
  • 数据类型 transid 是文本
  • 也许 transid 上的 mutator 可以为您提供所需的东西。通过在模型上定义 setTransidAttribute 方法重载 transid 属性,然后使用更新和创建的字段存储在 transid 中​​?希望我在这里理解正确。

标签: php mysql laravel laravel-5


【解决方案1】:

我试试这个,它对我有用

$now = Carbon::now();
$unique_code = $now->format('YmdHisu')

输出是

20180410171800873514

如果你解析你可以看到 2018 04 10 17:18:00 873514

【讨论】:

    【解决方案2】:

    我不知道你到底想做什么。我知道您想创建一条记录并用连接的时间戳填充 transid。 由于尚未创建记录,因此之前的时间戳为空。 在您的情况下,我将创建记录,然后我将获取时间戳并更新相同的记录。
    示例代码:

    $fund = Fund::create($input);
    $transid = $fund->created_at.$fund->updated_at;
    $fund->transid = $transid;
    $fund->update();
    

    如果这不是您想要做的,请提供更多信息以提供帮助。

    【讨论】:

    • 我只是按照你的指示,但有这样的错误:AccountController.php 第788行中的ErrorException:未定义变量:输入
    • 在您的情况下,输入被传递给 $request 变量。所以用 $request 替换我的 $input 参数。
    • 我只使用 $transid = date("Ymd")."1".time();我的身份证
    猜你喜欢
    • 1970-01-01
    • 2014-04-17
    • 2013-12-11
    • 2020-06-09
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 2019-03-08
    • 2013-05-22
    相关资源
    最近更新 更多