Php 如何使用查询生成器laravel将多条记录插入mysql
如何使用查询生成器laravel将多条记录插入mysql?我尝试使用Php 如何使用查询生成器laravel将多条记录插入mysql,php,mysql,laravel,Php,Mysql,Laravel,如何使用查询生成器laravel将多条记录插入mysql?我尝试使用insert->()将记录插入mysql表,但它只插入了一个值。我尝试阅读了一些关于插入多个记录的文章,但这并不是我想要的 我的控制器 public function postBuy(Request $request) { $data = array(); $data['products_id']= $request->get('products_id'); $data['products'] = $request-&
insert->()
将记录插入mysql表,但它只插入了一个值。我尝试阅读了一些关于插入多个记录的文章,但这并不是我想要的
public function postBuy(Request $request)
{
$data = array();
$data['products_id']= $request->get('products_id');
$data['products'] = $request->get('products');
$data['price'] = $request->get('price');
$data['user_id'] = $request->get('user_id');
$data['user_name'] = $request->get('user_name');
$data['user_email'] = $request->get('user_email');
$query_insert = DB::table('cashier')->insert($data);
return redirect('index');
}
<form method="POST" action='{{ url("buy") }}' enctype="multipart/form-data">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<table class="table table-stripped">
<thead>
<tr>
<th>Product</th>
<th>Price</th>
</tr>
</thead>
<tbody>
@foreach($item as $items)
<input type="hidden" name="products_id" class="form-control" required="required" value="{{$items->id}}" readonly="readonly">
<tr>
<td>
<div class="form-group">
<input type="text" name="products" class="form-control" required="required" value="{{$items->name}}" readonly="readonly">
</div>
</td>
<td>
<div class="form-group">
<input type="text" name="price" class="form-control" required="required" value="{{$items->price}}" readonly="readonly">
</div>
</td>
</tr>
@endforeach
<tr>
<td>Total :</td>
<td><?php echo number_format($total) ;?></td>
</tr>
</tbody>
</table>
<div class="form-group">
<input type="hidden" name="user_id" class="form-control" required="required" value="{{Session::get('id')}}">
</div>
<div class="form-group">
<input type="hidden" name="user_name" class="form-control" required="required" value="{{Session::get('name')}}">
</div>
<div class="form-group">
<input type="hidden" name="user_email" class="form-control" required="required" value="{{Session::get('email')}}">
</div>
<br>
<button type="submit" class="btn btn-success"><span class="glyphicon glyphicon-ok"></span> Buy</button>
<button type="button" class="btn btn-danger" data-dismiss="modal"><span class="glyphicon glyphicon-remove"></span>Cancel</button>
</form>
产品
价格
@foreach($items作为$items)
@endforeach
总数:
购买
取消
使用Elount或查询生成器在Laravel中进行批量插入非常容易 您可以使用以下方法:
public function postBuy(Request $request)
{
$data = array(
array('products_id'=> $request->get('products_id'), 'products'=> $request->get('products'), 'price'=> $request->get('price'), 'user_id'=> $request->get('user_id'), 'user_name'=> $request->get('user_name'), 'user_email'=> $request->get('user_email')),
array('products_id'=> $request->get('products_id'), 'products'=> $request->get('products'), 'price'=> $request->get('price'), 'user_id'=> $request->get('user_id'), 'user_name'=> $request->get('user_name'), 'user_email'=> $request->get('user_email'),
//...
);
$query_insert = DB::table('cashier')->insert($data);
return redirect('index');
//For info
Model::insert($data); // Eloquent approach
DB::table('cashier')->insert($data); // Query Builder approach as you are using
}
编辑:
在您的情况下,您需要在表单中的每个输入字段中输入[]
!比如:
name=“products\u id[]”
,name=“products[]”
,name=“price[]”
编辑2:
您可以使用foreach
添加多个记录,如:
foreach ($request as $key=>$value)
{
$data[] = [
'products_id' => $value['products_id'],
'products' => $value['products'],
'price' => $value['price'],
'user_id' => $value['user_id'],
'user_name' => $value['user_name'],
'user_email' => $value['user_email']
];
}
DB::table('cashier')->insert($data); // Query Builder approach as you are using
希望这对你有帮助 您使用相同的名称发送输入,因此laravel不会将它们作为数组接收 比如说
@foreach($item as $items)
<input type="hidden" name="products_id[]" class="form-control" required="required" value="{{$items->id}}" readonly="readonly">
<tr>
<td>
<div class="form-group">
<input type="text" name="products[]" class="form-control" required="required" value="{{$items->name}}" readonly="readonly">
</div>
</td>
<td>
<div class="form-group">
<input type="text" name="price[]" class="form-control" required="required" value="{{$items->price}}" readonly="readonly">
</div>
</td>
</tr>
@endforeach
可以使用数组和foreachfunction@Jigs1212您能更具体地解释一下吗?请注意表单中添加的
[]
获取错误,'传递给Illumb\Database\Query\Builder::insert()的参数1必须是数组类型,给定对象',在这一行'$Query\u insert=DB::table('cashier')->insert($insertData);'
$data = array();
$data['products_id']= $request->get('products_id');
$data['products'] = $request->get('products');
$data['price'] = $request->get('price');
$insertData = collect($data);
$insertData->prepend($request->get('user_id'), 'user_id');
$insertData->prepend($request->get('user_name'), 'user_name');
$insertData->prepend($request->get('user_email'), 'user_email');
$query_insert = DB::table('cashier')->insert($insertData);