PHP Laravel说我插入空,但函数应该返回字符串

时间:2016-11-03 00:49:48

标签: php laravel-5

我在为Laravel 5应用程序下订单后为每位客户生成客户ID。以下是为客户生成ID的代码,该代码由其名字,姓氏的一部分组成,如果这将呈现重复,则会附加随机字符串。

$ID = strtolower(substr($itemsP['firstName'],0,2) . $itemsP['lastName']);

function checkforduplicateID($iD,$firstName,$lastName)
{
    $f = $firstName;
    $l = $lastName;
    $orders = Order::where('customerID',$iD)->get()->count();

    if($orders>0)
    {
        $ID = strtolower(substr($firstName,0,2) . $lastName . substr(md5(rand()),0,2)); 
        checkforduplicatecode($ID,$f,$l);
    } 
    else 
    {
        return $iD; 
    }
}

$sessionOrder->customerID = checkforduplicateID($ID,$itemsP['firstName'],$itemsP['lastName']);
$sessionOrder->save();

第一次出现(没有重复)这完美无缺。但是,只要我有两个具有相同名字和姓氏的客户,该函数就会返回一个null,而不是带有附加(和随机)字符串的相同ID。

所以我在倒数第二行遇到完整性违规,因为我在我的数据库中插入null

我的checkforduplicateID功能显然有问题,但我无法弄清楚是什么。

请协助。

1 个答案:

答案 0 :(得分:1)

我相信这里

if($orders>0) {
    $ID = strtolower(substr($firstName,0,2) . $lastName . substr(md5(rand()),0,2));
    checkforduplicatecode($ID,$f,$l);
} else {

你需要像这样返回新的ID:

if($orders>0) {
    $ID = strtolower(substr($firstName,0,2) . $lastName . substr(md5(rand()),0,2));
    return checkforduplicateID($ID,$f,$l);
} else {