Обновите две таблицы, используя одну функцию в Laravel - PullRequest
0 голосов
/ 23 февраля 2019

Я создаю приложение, используя 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 голосов
/ 23 февраля 2019

Если у вас есть отношения между двумя моделями, вы можете обновить как это

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

Надеюсь, это поможет:)

0 голосов
/ 23 февраля 2019

Можете ли вы попробовать это.

Контроллер

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'];

}

В этом коде после сохранения нового отдела я получаю UserData в UserModel, где id - это $request['user_id], затем проверьте его, если существует.

Если существует, я изменяю тип на 'chief' и сохраняю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...