2014-11-14 16 views
0

如何在Laravel中爲保存的數據庫表格列生成唯一的biginteger。爲表格列生成唯一的大整數Laravel

------------------------------ 
id | banner_id | title 
------------------------------ 
1 | 2348779 | some title 
------------------------------ 
2 | 2312779 | some title2 
------------------------------ 

其中id是我primary keybanner_id random unique bigint

+0

爲什麼單獨的值而不是依賴主鍵(大概已經是唯一的並且自動生成的)? –

+0

你是對的,但我接管了一些舊的結構什麼設計不正確,舊的系統應該運行在後面,所以我沒有很大的靈活性來對錶格進行重大更改 – fefe

+1

如果SERIAL列類型可以轉換它, (SERIAL是具有唯一和自動增量屬性的BIGINT)。否則,尋找像microtime()這樣的東西可能是減少碰撞的最佳選擇。 –

回答

-1

你可以嘗試這樣的事情:

$number = rand(9999, 9999999); 
+0

是的,但我必須驗證此號碼是否存在。 – fefe

0

,如果你需要整數

floor(
    microtime() 
    * rand(10,100) // range may be different 
    * time() 
); 

或; 創建numbers_table

| id | 

ALTER TABLE `numbers_table` auto_increment = 10000000000; 

插入一條記錄,並獲得最後插入的ID!並將其用於banner_id