根据时间戳 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的主要内容,如果未能解决你的问题,请参考以下文章