我尝试使用randomString()生成类似6B6E23518的内容,我在控制器内部调用
function randomString($chars=10) //generate random string
{
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randstring = '';
for ($i = 0; $i < $chars; $i++) {
$randstring .= $characters[rand(0, strlen($characters))];
}
return $randstring;
}
public function store(TicketsCreateRequest $request)
{
$ticket = $user->tickets()->create([
'ticket_hash' => $this->randomString(10),
// ....
]);
}
但这会继续将0存入&#39; ticket_hash&#39;什么都没有产生?
答案 0 :(得分:0)
查看源代码,randomString()
是控制器类的公共方法,还是在类外的其他地方声明的全局函数?我问,因为它在没有public
可见性限定符的情况下进入上面,并且对它下面的方法略有不同的缩进。
如果此功能不是您课程的实时方法,那么您对$this->randomString()
的调用可能不会调用您希望它调用的方法。如果您的randomString()
函数是其他地方定义的全局函数,则应直接调用它(例如。'ticket_hash' => randomString(10),
)
对于它的价值,对于这样的随机字符串,最好使用Laravel框架的Str
类,因为它可能更多稳定,绝对是更广泛使用。
在这种情况下,Str::random()方法可以实现您正在寻找的输出。
答案 1 :(得分:0)
列ticket_hash是一个整数类型,将其更改为varchar,现在可以正常工作。