保存到数据库时雄辩地复制行 - laravel

问题描述 投票:0回答:2

我遇到这个问题,即使数组包含一个索引位置,当我保存到数据库时行也会重复。我在这里错过了什么吗?

 foreach($params['service'] as $key => $value){
    $data['name'] = $value;
    $data['price'] = $params['price'][$key];  
    $data['business_id'] = $params['business_id'];
    $service = new  Service($data);
    $service->save();
}

$ params的数据

array:5 [▼
  "business_id" => "1"
  "service" => array:1 [▼
    0 => "web development"
  ]
  "price" => array:1 [▼
    0 => "R4500"
  ]
  "submit" => null
]

这些都是重复的

1   web development     R4500   1   2018-08-30 07:24:34     2018-08-30 07:24:34
2   web development     R4500   1   2018-08-30 07:24:34     2018-08-30 07:24:34

不幸的是,@ Rathod提供的答案也会产生重复,但我注意到当我向阵列添加多个数据时,如下所示,它保存没有重复。

array:5 [▼
  "business_id" => "1"
  "user_id" => "1"
  "service" => array:3 [▼
    0 => "web development"
    1 => "mobile development"
    2 => "internet marketing"
  ]
  "price" => array:3 [▼
    0 => "R4500"
    1 => "R8900"
    2 => "R5600"
  ]
  "submit" => null
]

这是完整的功能

 public function createService(array $params) : Service
{
  // dd($params);
    try {
      foreach($params['service'] as $key => $value){
        $service = new Service();
        $service->service = $value;
        $service->price = $params['price'][$key];
        $service->business_id = $params['business_id'];
        $service->save();
    }
      return $service;

    } catch (QueryException $e) {
        throw new CreateServiceInvalidArgumentException($e->getMessage(), 500, $e);
    }

  }
php laravel eloquent
2个回答
0
投票

尝试以下简单方法:

foreach($params['service'] as $key => $value){
    $service = new Service();
    $service->name = $value;
    $service->price = $params['price'][$key];
    $service->business_id = $params['business_id'];
    $service->save();
}

我希望它运作正常。


0
投票

那些我想把自己打成傻瓜的时刻......我只是注意到我是通过ajax发送相同的数据..我一定忘记了我已经做过了。感谢大家花时间为我看这个。

© www.soinside.com 2019 - 2024. All rights reserved.