Php 如何在Laravel中将多行插入数据库?
这是我的密码:Php 如何在Laravel中将多行插入数据库?,php,mysql,laravel,loops,insert,Php,Mysql,Laravel,Loops,Insert,这是我的密码: $num = 5; $voucher = new Voucher; for ( $i = $num; $i > 0; $i-- ) { $token = generateRandomString(5, ['number', 'uppercase']); $voucher->prefix = $request->prefix; $voucher->token = $token; $voucher->descript
$num = 5;
$voucher = new Voucher;
for ( $i = $num; $i > 0; $i-- ) {
$token = generateRandomString(5, ['number', 'uppercase']);
$voucher->prefix = $request->prefix;
$voucher->token = $token;
$voucher->description = $request->description;
$voucher->date_time = time();
$voucher->save();
}
显然,我的代码应该插入5行。但令人惊讶的是,它只插入了一行。出了什么问题以及如何修复?您应该在for循环中创建一个新凭证。目前,正如您所说,您正在将同一对象插入数据库中五次您应该在for循环中创建一个新凭证。目前,正如您所说,您将同一对象插入数据库五次始终使用同一对象实例。每次使用不同的数据保存同一行时。下面是如何修复
$num = 5;
for ( $i = $num; $i > 0; $i-- ) {
$voucher = new Voucher;
$token = generateRandomString(5, ['number', 'uppercase']);
$voucher->prefix = $request->prefix;
$voucher->token = $token;
$voucher->description = $request->description;
$voucher->date_time = time();
$voucher->save();
}
始终使用对象的同一实例。每次使用不同的数据保存同一行时。下面是如何修复
$num = 5;
for ( $i = $num; $i > 0; $i-- ) {
$voucher = new Voucher;
$token = generateRandomString(5, ['number', 'uppercase']);
$voucher->prefix = $request->prefix;
$voucher->token = $token;
$voucher->description = $request->description;
$voucher->date_time = time();
$voucher->save();
}
如果您已经有一个模型实例,则可以使用
fill
方法用属性数组填充它:
$num = 5;
$voucher = new Voucher;
for ( $i = $num; $i > 0; $i-- ) {
$token = generateRandomString(5, ['number', 'uppercase']);
$payload = [];
$payload['prefix'] = $request->prefix;
$payload['token'] = $token;
$payload['description'] = $request->description;
$payload['date_time'] = time();
$voucher->fill($payload);
}
如果您已经有一个模型实例,您可以使用
fill
方法用属性数组填充它:
$num = 5;
$voucher = new Voucher;
for ( $i = $num; $i > 0; $i-- ) {
$token = generateRandomString(5, ['number', 'uppercase']);
$payload = [];
$payload['prefix'] = $request->prefix;
$payload['token'] = $token;
$payload['description'] = $request->description;
$payload['date_time'] = time();
$voucher->fill($payload);
}
您每次都在使用相同的实例! 在每个for循环中创建一个新的for循环,如:
$num = 5;
for ( $i = $num; $i > 0; $i-- ) {
$voucher = new Voucher;
$token = generateRandomString(5, ['number', 'uppercase']);
$voucher->prefix = $request->prefix;
$voucher->token = $token;
$voucher->description = $request->description;
$voucher->date_time = time();
$voucher->save();
}
您每次都在使用相同的实例! 在每个for循环中创建一个新的for循环,如:
$num = 5;
for ( $i = $num; $i > 0; $i-- ) {
$voucher = new Voucher;
$token = generateRandomString(5, ['number', 'uppercase']);
$voucher->prefix = $request->prefix;
$voucher->token = $token;
$voucher->description = $request->description;
$voucher->date_time = time();
$voucher->save();
}
这是创建多数组和简单插入函数的基本示例
$num = 5;
$dataArray = array();
for ( $i = $num; $i > 0; $i-- ) {
$token = generateRandomString(5, ['number', 'uppercase']);
$dataArray[$i]['prefix'] = $request->prefix;
$dataArray[$i]['token'] = $token;
$dataArray[$i]['description'] = $request->description;
$dataArray[$i]['date_time'] = time();
}
Voucher::insert($dataArray);
这是创建多数组和简单插入函数的基本示例
$num = 5;
$dataArray = array();
for ( $i = $num; $i > 0; $i-- ) {
$token = generateRandomString(5, ['number', 'uppercase']);
$dataArray[$i]['prefix'] = $request->prefix;
$dataArray[$i]['token'] = $token;
$dataArray[$i]['description'] = $request->description;
$dataArray[$i]['date_time'] = time();
}
Voucher::insert($dataArray);
$voucher=新凭证代码>处于循环中@是的。。谢谢$voucher=新凭证代码>处于循环中@是的。。非常感谢。