根据时间戳 laravel 5 生成唯一 id

Posted

技术标签:

【中文标题】根据时间戳 laravel 5 生成唯一 id【英文标题】:generate unique id based on timestamp laravel 5 【发布时间】: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 中​​?希望我在这里理解正确。 【参考方案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();我的身份证

以上是关于根据时间戳 laravel 5 生成唯一 id的主要内容,如果未能解决你的问题,请参考以下文章

根据每个唯一 ID 的最新时间戳过滤数据帧 [重复]

根据时间戳条件过滤数组中的唯一对象

测试唯一ID支持多大的并发量

使用Marklogic(XQuery)中的时间戳生成非重复随机数?

php生成唯一订单号 时间戳可以吗

Laravel:生成随机唯一令牌