Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用查询生成器laravel将多条记录插入mysql_Php_Mysql_Laravel - Fatal编程技术网

Php 如何使用查询生成器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-&

如何使用查询生成器laravel将多条记录插入mysql?我尝试使用
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
    总数:
    
    购买 取消
  • 视图中将插入mysql表的我的记录

  • 我想在我的出纳表中插入这2条记录,但它只插入1条记录


  • 使用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);