Создайте отношение таблицы один ко многим с помощью ввода текста Laravel - PullRequest
0 голосов
/ 18 марта 2020

У меня есть две таблицы с отношением один ко многим - gratitude_journal_entries и self_gratitudes. Множество собственных благодарностей (которые отправляются пользователем в виде текстовых записей) могут применяться к 1 gratitude_journal_entry. Данные передаются в эти две таблицы через форму.

Я пытаюсь сохранить текстовые записи с благодарностью в массиве, а затем передать их в таблицу self_gratitude вместе с внешним ключом из * 1007. * table.

Проблема, с которой я столкнулся, заключается в том, что я не уверен, как взять входные данные из массива и сохранить их в столбце self_gratitude.

Вот столбцы для gratitude_journal_entries таблица

enter image description here

Вот столбцы для таблицы self_gratitudes

enter image description here

Вот модели и способ хранения в моем контроллере

class SelfGratitudes extends Model
{
    protected $table = 'self_gratitudes';
    public $primarykey = 'id';

    public function gratitudeJournalEntries() {
        return $this->belongsTo(GratitudeJournalEntry::class);
    }
}
class GratitudeJournalEntry extends Model
{
    protected $table = 'gratitude_journal_entries';
    public $primarykey = 'id';
    public $timestamps = true;

    public function user() {
        return $this->belongsTo('App\User');
    }

    public function selfGratitudes()
    {
        return $this->hasMany(SelfGratitudes::class);
    }
public function store(Request $request)
    {
        $this->validate($request, [

        ]);

        $gj_entry = new GratitudeJournalEntry;
        $gj_entry->user_id = auth()->user()->id;
        $gj_entry['entry_date'] = date('Y-m-d H:i');
        $self_gratitudes = $request->has('self_gratitudes') ? $request->get('self_gratitudes') : [];
        $tj_entry->save();

        $gj_entry->selfGratitudes()->sync($self_gratitudes);


        return redirect('/dashboard')->with('success', 'You submitted a new journal entry');
    }

1 Ответ

0 голосов
/ 18 марта 2020

Если вы хотите сохранить массив в базе данных, вы можете использовать приведение к столбцам: laravel document

class SelfGratitudes extends Model
{
    protected $casts = [
        'self_graitude' => 'array',
    ];

    protected $table = 'self_gratitudes';
    public $primarykey = 'id';

    public function gratitudeJournalEntries() {
        return $this->belongsTo(GratitudeJournalEntry::class);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...