使用Laravel中的一个函数更新两个表

时间:2019-02-23 02:16:00

标签: laravel laravel-5 laravel-5.7

我正在使用Laravel 5.7和Vue.js2构建应用程序。我有两个表:部门和用户。用户可以是部门主管。我建立了模型之间的关系。我想要这样,以便在创建新部门时,主管的类型将在用户表上更改为“主管”。

DepartmentController

public function store(Request $request)
{
    $this->validate($request, [
        'name' => 'string|required|max:191',
        'bio' => 'string|required',
        'user_id' => 'integer|required|unique:departements'
    ]);

    return Department::create([
        'name' => $request['name'],
        'user_id' => $request['user_id'],
        'bio' => $request['bio']
    ]);
}

2 个答案:

答案 0 :(得分:0)

你可以试试这个吗?

控制器

public function store(Request $request)
{
    $this->validate($request,[
        'name'=>'string|required|max:191',
        'bio'=>'string|required',
        'user_id'=>'integer|required|unique:departements'
    ]);

    $new_department = Department::create([
        'name'=>$request['name'],
        'user_id'=>$request['user_id'],
        'bio'=>$request['bio']
    ]);

    $get_user = User::where('id', $request['user_id'])->first();
    if($get_user)
    {
         $get_user->type = 'chief';
         $get_user->save();
    }

    return ['message' => 'success'];

}

在此代码中,保存新部门后,我获得了UserModel中的UserData,其中id为$request['user_id],然后检查它是否存在。

如果存在,我将类型更改为'chief'并保存。

答案 1 :(得分:0)

如果您有两个模型之间的关系,则可以像这样更新

$product = Department::with('relationship_function_name')->find($id);
$product->fields= $request->input_name;
$product->relationship_function_name->field_name = $request->input_name;
$product->update();

希望这会有所帮助:)