【问题标题】:how to insert multiple records in table using laravel如何使用laravel在表中插入多条记录
【发布时间】:2018-12-03 14:40:38
【问题描述】:

大家好,我正在尝试使用 api 将多条记录插入表中。但我收到类似“连接到数据库时出错”之类的错误。我该如何解决它。

下面是我的代码

public function addToCart(){
   $input =  Input::all();
   $data['status'] = 0;
   $data['error'] = true;
   if(isset($input['user_id']) && array_filter($input['cart']) > 0 ){

        foreach($input['cart'] as $key => $val){


          if(!empty($val['quantity']) && !empty($val['price']) && !empty($val['sku']) && !empty($val['qrcode'])  && !empty($val['product_id']))

            {

                $totalPrice = $val['quantity']* $val['price'];

                    $cartId = DB::table('jocom_cart')->insertGetId(array(
                    'user_id'   => $input['user_id'],
                    'product_id'      => $val->product_id,
                    'sku'      => $val->sku,
                    'quantity'       => $val->quantity,
                    'price' => $val->price,
                    'total_price' => $totalPrice,
                     'qrcode' => $val->qrcode
                    )
                );

        }

    else{
        $data['message'] = 'All field are required.';

    }
    return Response::json($data);   
}

【问题讨论】:

  • 你能提供更多关于错误的细节吗?
  • 连接到数据库时出错.. 仅出现此错误。实际上我正在尝试使用 api 插入多条记录。当我使用 foreach 循环编写时出现此错误。但是当我想插入单个记录时没有成功插入 foreach.data
  • 在保存之前将 var 与 $cartId = []; 之类的数组一起使用,然后像这样使用它:$cartId[] = DB::table('jocom_cart')->insertGetId(..... 希望这会有所帮助!另外,$input['cart'] 中有多个数据吗??
  • 是的,输入购物车中有多个数据
  • 然后尝试我提供的场景。

标签: php mysql laravel api


【解决方案1】:

创建一个数据数组,然后将该数组传递给insert function

尽量避免循环查询

$insertRecord = [];
foreach($input['cart'] as $key => $val){
    if(!empty($val['quantity']) && !empty($val['price']) && !empty($val['sku']) && !empty($val['qrcode'])  && !empty($val['product_id']))
    {
        $totalPrice = $val['quantity']* $val['price'];
        $insertRecord[$key] = ['user_id'=>$input['user_id'],'product_id' => $val->product_id,... ,... ,...]; All your column with value
    }
}
if(!empty($insertRecord)){
   Model::insert($insertRecord); // Eloquent approach
   DB::table('table')->insert($insertRecord); // Query Builder approach
}

【讨论】:

  • 我试过你的代码,但状态为真。无法插入数据
【解决方案2】:

您的记录应该在数组中。 表::插入(数组)

【讨论】:

  • 是的,它在数组中 $cartId = DB::table('jocom_cart')->insertGetId(array(
  • 那么,您面临的实际问题是什么?
  • 只使用 DB::table('jocom_cart')->insert(array);
猜你喜欢
  • 1970-01-01
  • 2015-05-10
  • 2016-12-31
  • 1970-01-01
  • 1970-01-01
  • 2020-10-18
  • 2021-01-29
  • 2016-08-16
  • 1970-01-01
相关资源
最近更新 更多