【问题标题】:How to generate report ticket number with Laravel?如何使用 Laravel 生成报告票号?
【发布时间】:2019-08-22 07:14:49
【问题描述】:

目前正在进行失物招领项目,用户可以在遗失物品时进行报告。

我正在使用 laravel 5.4,我的数据库中已经有一些数据,并且我已经根据我的客户提出了所有要求。但最后,我的客户希望我为每个已制作的报告添加唯一的报告编号票证。我用谷歌搜索了它,但我找不到与我的案例相似的教程

我是编程新手,任何帮助将不胜感激。

【问题讨论】:

  • 我想你的数据库中有一个自动递增的票证列?这些是唯一的数字。
  • 是的,我有。但客户要求在提交报告后发送给用户的电子邮件确认中附加更复杂的数字,例如#466244658574。我真的很困惑xD

标签: php laravel email generate ticket-system


【解决方案1】:

有很多方法可以做到这一点,但要记住以下两个 sprint:

  1. 使用数据库中的自动增量列并向其中添加一些其他内容,例如当前日期,并确保在其中添加几个零(例如 20192208-00001)。
$date = new DateTime('now');
echo $id = $date->format('Y-m-d') . "-" . str_pad($ticket->id, 6, "0", STR_PAD_LEFT);
  1. 您也可以为此使用Uuid。这些是唯一生成的数字,几乎不可能发生碰撞。要设置它,您需要一个支持它的库composer require ramsey/uuid。然后你可以像这样生成你的随机数:
$uuid4 = Uuid::uuid4();
echo $uuid4->toString(); // i.e. 25769c6c-d34d-4bfe-ba98-e0ee856f3e7a

【讨论】:

    【解决方案2】:

    您可以使用 Unix Timestamp 作为您的唯一字段。

    $token = time();
    

    现在在您将新报告保存到数据库时添加此标记。如果你想让它更独特,你可以添加一些随机字符串,比如

    在 Laravel 5.8 中,您需要先使用 use Illuminate\Support\Str; 这个。然后

    $token = time().Str::random(5);
    

    在以前的版本中是这样的

    $token = time().str_random(5);
    

    【讨论】:

      猜你喜欢
      • 2020-06-24
      • 1970-01-01
      • 2011-03-21
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-29
      • 2014-09-27
      相关资源
      最近更新 更多