在laravel的两个表中更新值时遇到错误

时间:2018-08-02 07:05:03

标签: laravel

public function update(Request $request, $user)
{

    $user= User::find($user);
    $user->name = $request->input('name');
    $mobile= Mobile::find($user);
    $mobile->id = $request->input('id');
    $mobile->country_code = $request->input('country_code');
    $mobile->phone_number = $request->input('phone_number');
    $user->save();

return redirect('/dashboard')->with('alert-success', 'updated');
    }

此代码对我不起作用...我想更新两个表中的值,一个表是(用户),第二个表是(移动)。

4 个答案:

答案 0 :(得分:0)

您没有将对Mobile模型的更改提交到数据库。

调用$model->save()会将对模型对象 那个实例的任何更改提交到数据库。

但是,您似乎使用了错误的值来“查找”移动模型。如果您正确使用了Laravel关系,那么我对该部分的编辑会有所帮助。

我倾向于在代码中单独处理对模型的更改,因此更具可读性。这是我的处理方式:

$user= User::find($user);
$user->name = $request->input('name');
$user->save();

$mobile = $user->mobile //this part relies on you having set up the relationship correctly.
$mobile->id = $request->input('id');
$mobile->country_code = $request->input('country_code');
$mobile->phone_number = $request->input('phone_number');
$mobile->save();

答案 1 :(得分:0)

           

编辑表单


   <form class="" action="{{ route('user.update',$user->id) }}" method="POST" name="">
       <input type="hidden" name="_method" value="PATCH">
       <input type="text" name="id" value="{{$user->id}}">
          {{ csrf_field() }} 

          <Input  type="text"  name="name" value="{{$user->name}}" >
          <Input  type="text"  name="email" value="{{$user->email}}" >

        @if($user->mobile)

         <Input  type="text"  name="country_code" value="{{$user->mobile->country_code}}">
          <Input  type="text"  name="phone_number" value=" {{$user->mobile->phone_number}}">
        @else
      <Input  type="text"  name="country_code" value="{{$user->mobile->country_code}}">
          <Input  type="text"  name="phone_number" value=" {{$user->mobile->phone_number}}">
        @endif

          <button type="submit" class="btn btn-danger btn-sm" value="" >update</span></button>
          <span class="pull-right">


</div>

它是我的edit.blade.php

用于编辑的控制器         $ editinfo = Mobile :: find($ user);         返回视图('edit',compact('user'));

答案 2 :(得分:0)

您没有在save()实例上执行$mobile 您忘了添加$mobile->save()

答案 3 :(得分:0)

您可以使用tap()功能

$user= User::findOrFail($id);
$user_update = tap($user)->update([
    'country_code' => $request->input('country_code'),
    'phone_number' => $request->input('phone_number'),
]);

进一步阅读:https://laravel.com/docs/5.6/helpers#method-tap