2016-06-21 95 views
1

我想用laravel-uuid包生成一個UUID(不是主鍵,只生成一個)。這些文檔非常簡單,所以根據自述文件,只需調用$uuid = Uuid::generate();即可生成UUID,但它會返回一個空對象。 (我也試過$uuid = Uuid::generate(1);Laravel UUID的生成

我按照提供的安裝說明(沒有什麼不尋常的),應用程序不會拋出任何錯誤,所以我猜一切都是正確的。

此替代包也歡迎。

+1

嘗試'回波UUID ::產生()'或'$ UUID = UUID ::產生(); echo $ uuid-> string' –

+1

我第二什麼@BenSwinburne說:看着[源](https://github.com/webpatser/laravel-uuid/blob/master/src/Webpatser/Uuid/Uuid.php# L428)似乎應該可以執行'echo Uuid :: generate() - > time'來取回v1 UUID。或者' - > string'來獲取字符串版本。 – bishop

+0

得到它的工作......事實證明,如果我試圖返回一個響應,並且當我使用$ uuid-> string時,對象返回空。謝謝! – Skatch

回答

3

原來我不得不使用$uuid->string獲得實際的ID,如果你試圖在一個JSON響應返回它的整個對象顯示爲空。

+0

請自我接受,讓我們未來的自我知道該怎麼做! :) – bishop

1

有可能$uuid是空的,因爲你的系統沒有提供正確的熵。您可以嘗試這些庫實現了無論是V4或V5 UUID:

// https://tools.ietf.org/html/rfc4122#section-4.4 
function v4() { 
    $data = openssl_random_pseudo_bytes(16, $secure); 
    if (false === $data) { return false; } 
    $data[6] = chr(ord($data[6]) & 0x0f | 0x40); // set version to 0100 
    $data[8] = chr(ord($data[8]) & 0x3f | 0x80); // set bits 6-7 to 10 
    return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4)); 
} 

// https://tools.ietf.org/html/rfc4122#section-4.3 
function v5($name) { 
    $hash = sha1($name, false); 
    return sprintf(
     '%s-%s-5%s-%s-%s', 
     substr($hash, 0, 8), 
     substr($hash, 8, 4), 
     substr($hash, 17, 3), 
     substr($hash, 24, 4), 
     substr($hash, 32, 12) 
    ); 
} 
+0

感謝隊友,我會嘗試這個作爲最後的手段,我想用一些爲laravel建造的東西 – Skatch