Laravel - Форма выбора категории из базы данных - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть таблицы базы данных «События» и «Категории». Я хочу назначить категорию событию, используя выпадающий список в форме. Я также хочу иметь возможность редактировать и обновлять его. Код, который я в настоящее время дал мне следующую ошибку -

SQLSTATE [23000]: нарушение ограничения целостности: 1048 Столбец 'category_id' не может быть пустым

addEvent .blade. php

  <div class="form-group">
    <div class="form-group">
      <div class="form-group">
        {!! Form::Label('category_id', 'Category:') !!}
        <select> class="form-control" name="category_id">
          @foreach($categories as $category)
            <option value='{{ $category->id}}'> {{ $category->category}}</option>
          @endforeach
         </select>
      </div>
    </div>
  </div>

eventController

public function addEvent(Request $request)
{
  $this->validate($request, [
    'event_name'  => 'required',
    'start_date'  => 'required',
    'end_date'    => 'required',
    'time'        => 'required',
    'trip_id'     => 'required',

  ]);

    $start_date = Carbon::parse($request['start_date'])->format('Y-m-d');
    $end_date = Carbon::parse($request['end_date'])->format('Y-m-d');

    $tripCheck = Trip::where('id', $request['trip_id'])
    ->whereDate('startdate', '<=', $start_date)
    ->whereDate('enddate', '>=', $start_date)

    ->whereDate('startdate', '<=', $end_date)
    ->whereDate('enddate', '>=', $end_date)
    ->first();

    if ($tripCheck) {

      $events = new Events;
      $trips = Trip::all();
      $categories = Categories::pluck('category','id');
      $events->category_id = $request['category_id'];
      $events->colour =  $request['colour'];
      $events->event_name = $request['event_name'];
      $events->start_date = $request['start_date'];
      $events->end_date = $request['end_date'];
      $events->time = $request['time'];
      $events->address = $request['address'];
      $events->notes = $request['notes'];
      $events->trip_id = $request['trip_id'];
      $events->save();

return redirect('trips')->with('success', 'The new event has been added to your trip')->with('trips', $trips)->withCategories($categories);
} else
  {
  return redirect('trips')->withErrors(['The dates you added are not within Trip start and end date.']);
   }


public function display($id)
{
  $categories = Categories::all();

  return view('/addEvent')->with('trip_id', $id)->withCategories($categories);
}

editEvent

<div class="form-group"> Category:
      <input type="select" name="category" class="form-control" value="{{$events->category}}" placeholder="Category" />
    </div>

1 Ответ

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

Вы закрываете свой <select> слишком рано. Измените

<select> class="form-control" name="category_id">

на

<select class="form-control" name="category_id">

, чтобы оно имело name, class et c

...