0
我在爲Laravel 5應用程序下訂單後爲每個客戶生成客戶ID。接下來是爲客戶生成一個ID的代碼,該代碼由他們的名字,姓氏的一部分組成,如果這會呈現重複,則會附加一個隨機字符串。PHP Laravel說我插入空值但功能應返回字符串
$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
函數顯然有些問題,但我無法弄清楚什麼。
請協助。
我不認爲這是正確的,如果有大於零匹配的訂單應該沒什麼因爲該函數需要再次運行,直到沒有訂單匹配,然後返回該ID。 –
你不會像這樣循環... checkforduplicatecode()會做什麼?是應該調用相同的功能?即使如此,您仍然需要返回它生成的內容。 – WEBjuju
假設checkforduplicateID()是預期的自循環結構,我更新瞭解決方案。 – WEBjuju