2016-04-21 74 views
2

您好,我的laravel應用程序我有一個函數,在客戶完成交易時生成唯一的收據代碼。在Laravel中生成唯一的收據代碼

這是代碼格式: 1. 4存儲的數字標識符例如: ABCD 2.購買的物品的類型或類別。例如。 E電子產品,T玩具 3.特殊的祕密兩位數字代碼,例如:可以在和之間。 4.日期格式非常短。例如。 31J16 2016年1月31日 5.客戶用於支持問題或退貨的四位數代碼。例如。 。這是隨機生成的。

所以一個樣本看起來像這樣:ABCDT0131J163267 總長度是16個字符。

現在我想做的是生成的代碼確保它不會已經在自己的數據庫中,如果是的話,直到它與一個唯一的代碼來了,應該產生一個新的等各個時間。

現在我的問題是得到一個有效的解決方案t生成獨特的代碼,不會像我打算做的那樣多次循環。

+0

你的問題是什麼?我們不會爲你寫代碼。 – ceejayoz

+0

謝謝先生,我知道這一點。我所說的問題是一種有效的方法**,同時避免循環多次,並在每個循環上執行數據庫調用,以檢查代碼是否存在,並在存在代碼時生成新代碼。 – user3718908

+0

你將不得不進行數據庫調用。它必須循環的機會取決於您的四位數代碼的大小以及您在平均一天中的訂單數量。如果你希望循環更少,增加代碼的長度,這樣你就不太可能發生衝突。 – ceejayoz

回答

0

好吧,所以我想到了一些讓我在第一個循環中只進行一次數據庫調用的東西。我從數據庫中獲取所有現有代碼,然後使用函數in_array()來檢查列表,如果它存在,它會生成一個新代碼。

唯一的缺點是如果在生成列表後生成了特定代碼不會成爲列表的一部分的事務。