更新表,其中单个id在laravel中具有多个记录

时间:2017-03-02 07:08:56

标签: php mysql laravel

我有一张如下表格。

表A

id  | id_n | val_a 
1   | 1    |  a1
2   | 2    |  a2
3   | 2    |  a3
4   | 2    |  a4

我希望使用laravel 5.2更新id_n = 2val_a = {b1,b2,b3,b4,b5}的所有值

更新表后的

如下所示。

id  | id_n | val_a 
1   | 1    |  a1
2   | 2    |  b1
3   | 2    |  b2
4   | 2    |  b3
5   | 2    |  b4
6   | 2    |  b5

我怎样才能在laravel 5.2中这样做?谢谢你。

2 个答案:

答案 0 :(得分:0)

如果您要删除旧记录并想要更新新

  1. 删除这样的旧记录,

    DB::table('table_name')->where('id_n', 2)->delete();
    
  2. 存储新记录

    $postData = [
        ["id_n" => 2,"val_a"=> "b1"],
        ["id_n" => 2,"val_a"=> "b1"],
        ........
    ];
    DB::table('table_name')->insert($postData);
    

答案 1 :(得分:0)

由于您不知道需要更新多少行,我会以与Niklesh不同的方式进行更新。

首先我还会删除所有行,但我会检查已删除的行数

DISTINCT

之后我会遍历所有行并单独插入每一行。

$num_deleted = your_model::where('id_n', 2)->delete();

如果您在for ($x = 1; $x <= $num_deleted; $x++) { your_model::create(["id_n" => 2,"val_a"=> "b".$x]); } id_n = 2行的位置只有1行,那么这样做有效。