2016-01-13 56 views
0

环境:PHP,MariaDB的,雄辩如何插入UUID与PHP-DB-框架雄辩

我可以插入一个UUID到表很容易,用SQL查询:

INSERT INTO `customer_loginToken` (`customer_id`, `loginToken`, `loginIP`) VALUES (1, uuid(), '127.0.0.1') 

但我怎么能用框架雄辩插入一个uuid的'loginToken'列?

Customer_loginToken::firstOrCreate( 
    array( 
     'customer_id' => $customer[0]->id_kunde, 
     'loginToken' => **'UUID()'**, 
     'loginIP' => $loginIP 
     ) 
); 

回答

1

它非常简单。假设你想为你的UUID使用GUID,你可以通过com_create_guid函数来实现。

就个人而言,我更喜欢它下面的垫片,因为它增加了功能,如果PHP安装缺少它。这有点相同。另外,GUID()com_create_guid()更好。

的另一件事,这里要注意的是,MySQL describes THIS as format。我猜测MySQL的UUID不过是GUID

function GUID() 
{ 
    if (function_exists('com_create_guid') === true) 
    { 
     return trim(com_create_guid(), '{}'); 
    } 

    return sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535)); 
} 

// Source http://php.net/manual/en/function.com-create-guid.php 

然后

Customer_loginToken::firstOrCreate( 
array( 
    'customer_id' => $customer[0]->id_kunde, 
    'loginToken' => GUID(), 
    'loginIP' => $loginIP 
    ) 
); 

应该这样做。

你可以做,如果你想使用的UUID的数字格式的另一件事情:使用uniqid功能。完全相同的代码,但GUID()部分更改为uniqid()

如果没有什么帮助,你可以写一个函数,并把价值在那里。

但是,请记住,你将无法精确值相同的MySQL,因为它是一个完全随机数。

+0

非常感谢您的解决方案!有用。但这个uuid不会重复吗?它是全球唯一的吗? –

+0

没有。机会非常小。看看http://stackoverflow.com/questions/39771/is-a-guid-unique-100-of-the-time – weirdpanda

+0

我读过你的帮助文章和感谢。这个解决方案的工作原理,我已经做了:) –