【发布时间】:2021-10-20 09:34:43
【问题描述】:
我正在创建一项功能,其中涉及为折扣创建优惠券代码。我包含一个输入,用户可以填写他们想要的具体金额。
当它点击 store 方法时,如果用户输入了 15 个凭证,你将如何一次创建那么多模型记录?
通过查看 laravel 文档,我唯一看到的是使用工厂,所以我在下面尝试了这个。
public function storeCodes(Request $request, VoucherGroup $voucherGroup)
{
VoucherCode::create([
'code' => $this->generateUniqueCode(),
'group_id' => $voucherGroup->id,
'used' => 0
]);
session()->flash('success', 'successfully created codes.');
return back();
}
private function generateUniqueCode()
{
$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersNumber = strlen($characters);
$code = '';
while (strlen($code) < 6) {
$position = rand(0, $charactersNumber - 1);
$character = $characters[$position];
$code = $code . $character;
}
if (VoucherCode::where('code', $code)->exists()) {
dd('lol');
$this->generateUniqueCode();
}
return $code;
}
输入
<x-inputs.input size="6" type="number" name="voucher_amount" required>How many Voucher codes do you want
to
generate?
</x-inputs.input>
问题是它创建了模型,但代码为每个模型返回相同的代码。
如何在一次调用中创建 15 个具有唯一代码字段的模型?
【问题讨论】:
-
您可以制作一组项目并使用
Model::insert(),但如果适用,您需要制作自己的时间戳。 -
将你的 create 函数放入 for 循环中。
-
@Lowtiercoder 可以分享一下方法吗
generateUniqueCode(); -
Maik Lowrey 我已经添加了完整的代码,因此 html 输入是需要创建的记录数量,并且每个记录的代码都必须是唯一的。我尝试了以下答案,但它卡住了循环创建而不是根据输入退出
-
@reans 但是如果我从输入中传递一个数字,您可以通过查看您需要自己手动添加的示例来指定要创建多少条记录吗?