我希望Server
模型的sid
的默认值是每次运行的uniqid()函数。像这样的东西,例如
$table->string('sid')->default(uniqid);
如何实现这一结果?
答案 0 :(得分:2)
您可以使用事件侦听器在模型上设置sid
属性。您可以使用事件侦听器,模型观察器或模型启动函数中的闭包函数来执行此操作。
// app\Models\YourModel.php
/**
* Define model event callbacks.
*
* @return void
*/
public static function boot()
{
parent::boot();
static::creating(function ($model) {
$model->sid = uniqid();
});
}
答案 1 :(得分:0)
不幸的是,MySQL
需要常量作为默认值。因此,默认值必须是常量,它不能是函数或表达式。
唯一的方法是允许字段为空,并在数据库上创建记录时添加uniqid()
,如下所示:
$table->string('sid')->nullable();
现在,当您将记录集sid
设置为uinqid()
值
如果您的模型名为Table
,那么
$record = new Table();
$record-> -----
--------
--------
$record->sid = uniqid();
$record->save();
这是你可以实现的方式。
<强>更新强>
您可以在模型中设置默认值,如下所示:
protected $attributes = array(
'sid' => uniqid(),
);
希望你明白。
答案 2 :(得分:0)
我认为这是最简单的方式
$table->unique('sid')->index()