Lavarel 5,更新1行,但它会影响多行。我不知道为什么,请建议

时间:2015-10-02 10:15:58

标签: mysql laravel

更新前。

mysql> select parcel_id,type, status ,accepted_at,accepted_user,submitted_at,submitted_user, updated_at from parcel_deliveries;
+---------------+------+--------+---------------------+---------------+---------------------+----------------+---------------------+
| parcel_id     | type | status | accepted_at         | accepted_user | submitted_at        | submitted_user | updated_at          |
+---------------+------+--------+---------------------+---------------+---------------------+----------------+---------------------+
| RI013502995TH |    1 |      1 | 2015-09-29 15:01:44 | hnong         | 2015-09-29 17:19:56 | hnong          | 2015-09-30 16:50:11 |
| EN064142823TH |    1 |      1 | 2015-10-02 16:17:39 | hnong         | 2015-10-02 16:48:24 | hnong          | 2015-10-02 17:12:39 |
| EN064142823TH |    2 |      1 | 2015-10-02 16:39:43 | hnong1        | 2015-10-02 16:48:24 | hnong          | 2015-10-02 17:12:39 |
+---------------+------+--------+---------------------+---------------+---------------------+----------------+---------------------+

3行(0.00秒)

更新记录,我打算只更新1行(parcel_id = EN064142823TH,类型= 2)

$a = App\Parcel_delivery::where('parcel_id', 'EN064142823TH')
->where('type', '=', 2)
->where('postal_code', '10170')                                                                                
->orderBy('created_at', 'desc')->first();

=> App\Parcel_delivery {#829
     parcel_id: "EN064142823TH",
     type: 2,
     status: 1,
     accepted_at: "2015-10-02 16:39:43",
     accepted_user: "hnong1",
     submitted_at: "2015-10-02 16:48:24",
     submitted_user: "hnong",
     destination_id: null,
     person_type: null,
     signature: null,
     comment: "",
     run_no: null,
   }
>>> $a->status = 5;
=> 5
>>> $a->save();                                                                                                => true

更新后。

mysql> select parcel_id,type, status ,accepted_at,accepted_user,submitted_at,submitted_user, updated_at from parcel_deliveries;
+---------------+------+--------+---------------------+---------------+---------------------+----------------+---------------------+
| parcel_id     | type | status | accepted_at         | accepted_user | submitted_at        | submitted_user | updated_at          |
+---------------+------+--------+---------------------+---------------+---------------------+----------------+---------------------+
| RI013502995TH |    1 |      1 | 2015-09-29 15:01:44 | hnong         | 2015-09-29 17:19:56 | hnong          | 2015-09-30 16:50:11 |
| EN064142823TH |    1 |      5 | 2015-10-02 16:17:39 | hnong         | 2015-10-02 16:48:24 | hnong          | 2015-10-02 17:14:43 |
| EN064142823TH |    2 |      5 | 2015-10-02 16:39:43 | hnong1        | 2015-10-02 16:48:24 | hnong          | 2015-10-02 17:14:43 |
+---------------+------+--------+---------------------+---------------+---------------------+----------------+---------------------+

3行(0.00秒)

我也不知道为什么另一条记录也会更新(parcel_id = EN064142823TH,type = 1)。

请建议。非常感谢你。

1 个答案:

答案 0 :(得分:0)

您的表缺少唯一的主键,因此Eloquent无法将一条记录与另一条记录区分开来,因此无法应用更新。在表中添加一个autoincrement id主键字段,我认为这个问题将得到解决。