Laravel,在创建模型时从uuid二进制文件转换为uuid文本

时间:2018-12-10 16:01:38

标签: php laravel

当前,我正在使用spatie uuid软件包。问题是,它会在创建新的数据行时自动创建uuid二进制(16)而不是uuid文本。我想插入uuid的文本版本。可以这样做吗?

模型

use HasBinaryUuid;
protected $table = 'furnitures';
protected $guarded = [];

public $incrementing = false;

public function getKeyName()
{
    return 'id';
}

控制器(商店)

return Furniture::create([
        'name' => $request['name'],
        'code' => $request['code'],
]); //this automatically generate uuid binary(16) id

2 个答案:

答案 0 :(得分:1)

您正在使用的库通过将UUID存储为二进制来优化UUID。使用相同的库将其存储为文本会违背其目的。您应该没有任何理由将其存储为文本,因为该库正在为您进行所有转换。

例如,如果您想在URL或JSON中使用UUID,则库可以为您从二进制转换为文本。

$model = MyModel::create();
dump($model->uuid_text); // "6dae40fa-cae0-11e7-80b6-8c85901eed2e" 

有关更多示例,请查看documentation

Laravel还提供了其他UUID库,这些库不使用二进制版本。

  1. Ramsey UUID
  2. Webpatser UUID
  3. EmadAdly UUID

答案 1 :(得分:0)

我通过使用返回uuid文本版本的代码model PulseTest "Test FixedDelay with Pulse Input"; Modelica.Blocks.Sources.Pulse pulse( startTime = 1, width = 100, period = 1/32, amplitude = 32, nperiod = 1 ); Modelica.Blocks.Nonlinear.FixedDelay fixedDelay( delayTime = 5 ); Modelica.Blocks.Continuous.Integrator x; // integrator for the undelayed pulse Modelica.Blocks.Continuous.Integrator y; // integrator for the delayed pulse equation connect( pulse.y, fixedDelay.u ); connect( fixedDelay.y, y.u ); connect( pulse.y, x.u ); end PulseTest; 建立了解决此问题的方法。但是我不确定这是最好的方法。任何其他想法都欢迎发布。

Mymodel::generateUuid(true)