Lareval устанавливает id для другой таблицы в транзакции БД - PullRequest
0 голосов
/ 14 февраля 2020

Вот моя транзакция БД

 public function store(Request $request)
    {

        DB::beginTransaction();
        try {
            $superdoc = SuperDoc::create([

                'user_id' => $request->user_id,
                'project_name' => $request->project_name,
                'status' => $request->status,
                'start_date' => $request->start_date,
                'end_date' => $request->end_date,
                'lines' => $request->lines,
                'words' => $request->words,

            ]);

            $lastInsertedId=DB::select('SELECT MAX(ID) FROM super_docs');

        } catch (ValidationException $e) {
            DB::rollBack();
            return redirect()->back();
        } catch (\Exception $e) {
            DB::rollback();
            throw $e;
        }
        try {


            $document = Document::create([
                'superD_id' => $request->superD_id,
                'url' => $request->url,
                'status' => $request->status,
                'text' => $request->text,
                'doc_type' => $request->doc_type,
                'language' => $request->language,
                'date' => $request->date,

            ]);
           return response()->json($superdoc, 201);

        } catch (ValidationException $e) {
            DB::rollBack();
            return redirect()->back();
        } catch (\Exception $e) {
            DB::rollback();
            throw $e;
        }
        DB::commit();
    }

Я хочу установить super_do c Автоматически сгенерированный последний идентификатор в таблицу документов superD_id в вышеупомянутой транзакции. Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 14 февраля 2020

У меня нет знаний о laravel но я могу дать идею, вставив в таблицу SuperDo c, вы можете получить эту модель, и модель выдаст вам модель superD_id, этот superD_id вы можете использовать в Таблице документов.

Так что я думаю, ваш код будет выглядеть следующим образом:

publi c store store (Request $ request) {

    DB::beginTransaction();
    try {
        $superdoc = SuperDoc::create([

            'user_id' => $request->user_id,
            'project_name' => $request->project_name,
            'status' => $request->status,
            'start_date' => $request->start_date,
            'end_date' => $request->end_date,
            'lines' => $request->lines,
            'words' => $request->words,

        ]);

        //$lastInsertedId=DB::select('SELECT MAX(ID) FROM super_docs');

    } catch (ValidationException $e) {
        DB::rollBack();
        return redirect()->back();
    } catch (\Exception $e) {
        DB::rollback();
        throw $e;
    }
    try {


        $document = Document::create([
            //$superdoc will have object of saved data which will also have SuperD_id
            'superD_id' => $superdoc->superD_id,
            'url' => $request->url,
            'status' => $request->status,
            'text' => $request->text,
            'doc_type' => $request->doc_type,
            'language' => $request->language,
            'date' => $request->date,

        ]);
       return response()->json($superdoc, 201);

    } catch (ValidationException $e) {
        DB::rollBack();
        return redirect()->back();
    } catch (\Exception $e) {
        DB::rollback();
        throw $e;
    }
    DB::commit();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...