生成唯一订单号

时间:2014-03-12 08:06:50

标签: php cakephp unique

我正在尝试通过Graph API上传Facebook页面的封面图片,但是一旦更新,它就会显示在时间轴上。

我使用以下字符串来检查我的订单号是否唯一

$unique_order_number = strtoupper(substr(md5(microtime()), 0, 8))

现在我想确保这个数字不被任何其他顺序占用,并且想要使用循环while或do-while循环来检查赋值。

public function __unique_order_no() {

    $order_no_exisits = $this->Order->find('first', array('order_no' => $unique_order_number));

    while (!empty($order_no_exisits)) {
        $unique_order_number = strtoupper(substr(md5(microtime()), 0, 8));
        $order_no_exisits = $this->Order->find('first', array('order_no' => $unique_order_number));
        debug($order_no_exisits);
    }

    debug($order_no_exisits);


}

如何使用While循环运行它直到我得到一个唯一的数字?

2 个答案:

答案 0 :(得分:1)

我需要做类似的事情,一个保持唯一ID的解决方案,我最终得到了一个使用PHP函数time()的解决方案,就像这样$reference_number = 'BFF-' . time();你可以将BFF更改为更有意义的东西对你的业务逻辑。这样我就不必担心之前是否会采用正在生成的新ID。

我希望这会有所帮助

答案 1 :(得分:1)

while (!empty($order_no_exisits)) {
$unique_order_number = strtoupper(substr(md5(microtime()), 0, 8));
if(!$this->Order->find('first', array('order_no' => $unique_order_number)))
exit;
}