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=新凭证处于循环中@是的。。非常感谢。