Хранение данных в сводной таблице базы данных Laravel - PullRequest
1 голос
/ 03 марта 2020

У меня есть две таблицы с отношением «многие ко многим», которые объединены этой таблицей ниже

enter image description here

Я использую метод хранилища ниже в моем контроллере, но при вызове он возвращает ошибку: Нарушение ограничения целостности: 1048 Столбец 'мысли_journal_entry_id' не может быть нулевым (SQL: вставить в thought_journal_entry_emotions (emotion_id, thought_journal_entry_id) значения (1,?))

Я понимаю, что для thought_journal_entry_id нет идентификатора, но я не уверен, как его найти. При попытке $entry = ThoughtJournalEntry::find(1) это работает, но мне нужно хранить данные для новых экземпляров ThoughtJournalEntry $entry = new ThoughtJournalEntry Как я могу это сделать?

public function store(Request $request)
    {
        $this->validate($request, [
            'thought_entry' => 'required'
        ]);

        $entry = new ThoughtJournalEntry;
        $entry->user_id = auth()->user()->id;
        $entry['entry_date'] = date('Y-m-d H:i');
        $entry->thought = $request->input('thought_entry');
        $emotions = $request->has('emotions') ? $request->get('emotions') : [];
        $emotions2 = Emotions::find($emotions);
        $entry->emotions()->sync($emotions2);
        $entry->tt_id = $request->has('thinking_traps') ? $request->get('thinking_traps') : [];
        $entry->balanced_thought = $request->input('balanced_thought');
        $entry->save();

        return redirect('/dashboard');
    }

1 Ответ

1 голос
/ 03 марта 2020

Вам необходимо сначала сохранить модель ThoughtJournalEntry $entry, чтобы получить идентификатор. А потом син c эмоции к записи

public function store(Request $request)
    {
        $this->validate($request, [
            'thought_entry' => 'required'
        ]);

        $entry = new ThoughtJournalEntry;
        $entry->user_id = auth()->user()->id;
        $entry['entry_date'] = date('Y-m-d H:i');
        $entry->thought = $request->input('thought_entry');
        $emotions = $request->has('emotions') ? $request->get('emotions') : [];

        $entry->tt_id = $request->has('thinking_traps') ? $request->get('thinking_traps') : [];
        $entry->balanced_thought = $request->input('balanced_thought');
        $entry->save();

        $emotions2 = Emotions::find($emotions);
        $entry->emotions()->sync($emotions2);

        return redirect('/dashboard');
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...