Eu tenho duas tabelas com um relacionamento muitos-para-muitos que são unidos por esta tabela abaixo
Eu estou usando o método loja abaixo dentro do meu controlador, mas quando chamado a devolver um erro: Integridade violação de restrição: 1048 Coluna 'thought_journal_entry_id' não pode ser nulo (SQL: INSERT INTO thought_journal_entry_emotions
( emotion_id
, thought_journal_entry_id
?) Valores (1,))
Eu entendo que não há nenhum id para o thought_journal_entry_id
, mas não tenho certeza de como encontrá-lo. Ao tentar $entry = ThoughtJournalEntry::find(1)
ele funciona, mas eu preciso para armazenar dados para novas instâncias do ThoughtJournalEntry $entry = new ThoughtJournalEntry
Como posso fazer isso?
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');
}
Você precisa primeiro salvar o ThoughtJournalEntry $entry
modelo, a fim de obter o id. E depois sincronizar as emoções para a entrada
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');
}