Laravel Как обновить значение до другого столбца в другой таблице? - PullRequest
0 голосов
/ 28 мая 2020

У меня есть две таблицы с именами «пользователи» и «запросы». В таблице запросов я хочу обновить пользователей emp_status до «Admin» и одновременно с таблицей «users».

Вот мой контроллер:

public function update(Request $request, $id)
{
    $status = "Admin";

    $admin = DB::table('users')
            ->where('emp_no', $id)
            ->update(array('emp_status'=>$status));

    $forms = Requests::find($id);
    $forms->emp_no = $request->get('emp_no');
    $forms->emp_name = $request->get('emp_name');
    $forms->email = $request->get('email');
    $forms->department = $request->get('department');
    $forms->emp_status = $request->get('emp_status', $admin);
    $forms->justification = $request->get('justification');

    $forms->save();

    return redirect('admins.request')->with('Success','Employee has been changed to admin!');
}

Модель запросов:

class Requests extends Model
{
    protected $fillable = [     
        'emp_no','emp_name','email','emp_status','department','justification'
    ];

   public function User(){
        return $this->hasMany('App\Requests');
   }
}

Модель пользователя:

protected $fillable = [
    'emp_no', 'emp_name', 'emp_contact','gender','email','password'
];

public function Requests(){
    return $this->hasOne('App\Requests');
}

Когда я выбираю опцию «Admin» в форме и нажимаю «Утвердить», он должен обновить две таблицы одновременно в соответствии с emp_no. Вот скриншот. Блейд-файл с подробностями формы

Как мне go об этом?

1 Ответ

0 голосов
/ 28 мая 2020

Предположим, что <select> в вашем файле лезвия определяется следующим образом:

<select id="status" name="status">
<option value="Admin">Admin</option>
<option value="Normal">Normal</option>
</select>

Затем в вашем контроллере вы вызываете его с помощью этого $request->status

Но поскольку вы обновляете два таблицы в то же время, вы должны заключить внутри метода обновления с областью transaction, чтобы в случае возникновения какой-либо ошибки во время процесса это было откат :

DB::transaction(function () use ($id, $request){


    $admin = DB::table('users')
        ->where('emp_no', $id)
        ->update(array('emp_status'=>$request->status));

    $forms = Requests::find($id);
    $forms->emp_no = $request->get('emp_no');
    $forms->emp_name = $request->get('emp_name');
    $forms->email = $request->get('email');
    $forms->department = $request->get('department');
    $forms->emp_status = $request->get('status');
    $forms->justification = $request->get('justification');

    $forms->save();
});
...