Laravel如何更新/同步输入字段数组中每一行的表数据?

时间:2019-04-13 23:12:05

标签: php laravel-5 eloquent

所以我在数组中有多个输入字段

<input type="text" name="messages[{{ $i }}]" id="messages" class="form-control" >

每个$i代表循环数组,我需要从该数组中将每个数组保存在单独的行中,同时需要进行同步,因此请删除该用户的旧数据并插入新的数据。 / p>

当前我有这个,并且它确实有效,问题是,它以某种奇怪的方式将行的内容保存在数据库中,使得它们不会按顺序排列。

所以在我的User模型中,我有这个

public function messages() {
      return $this->hasMany(Message::class);
}

当我点击页面上的“更新”按钮时,在我的UserController中,我将看到以下内容:

$user = User::find($id);

$user->name = $request->name;
$user->lastname = $request->lastname;

$user->save();

$user->messages()->delete();

if(is_array($request->messages)) {
  foreach($request->messages as $message) {
      if(!empty($message)){
         $user->messages()->create(['user_id' => $user->id, 'message' => $message]);
       }
   }
}

这可行,但是表中消息的顺序不正确:

+----+---------+--------------------------+
| id | user_id |         message          |
+----+---------+--------------------------+
|  6 |      12 | This is third message    |
|  5 |      12 | And now second message   |
|  4 |      12 | First message            |
|  7 |      12 | This should be forth one |
+----+---------+--------------------------+

0 个答案:

没有答案