Как передать целочисленное значение списка выбора в контроллер в laravel?

Я хочу передать значение списка выбора из представления моему контроллеру. Значение равно course_id. Когда я помещаю dd(request->all()) в свой контроллер, course_id представляет собой строку. В контроллере я привожу ее к целому числу и присваиваю объекту модели, но всегда ноль вставляется в поле course_id таблицы media. это мой взгляд:

<form action="../media" method="post" enctype="multipart/form-data">
{{csrf_field()}}
title: <input type="text" name="title">
<br> <br>
type:
<input type="radio" name="type" value="voice" checked>Voice<br>
<input type="radio" name="type" value="video">Video<br>
<br> <br>
link: <input type="file" name="link">
<br><br>
course:
<select name="$courses" >
    @foreach($courses as $course)
        <option value="{{$course->id}}">
            {{$course->title}}
        </option>
    @endforeach
</select>
<br><br>
<input type="submit">

это контроллер магазина:

 public function store(Request $request)
{
    //dd($request->all());
    $media=new Media();
    $media->title=$request->title;
    $media->type=$request->type;
    $media->course_id=(int)($request->courses);
    $media->save();
    $format=$request->file('link')->getClientOriginalExtension();
    $size=$request->file('link')->getSize();
    $name=$request->type.'-'.$media->id.'.'.$format;
    $request->file('link')->move(public_path('medias'),$name);
    $media->link= $name;
    $media->format=$format;
    $media->size=$size;
    $media->save();
    return back();
}

И это создать контроллер:

 public function create()
{
    $courses=Course::all();
    return view('Admin.Media.create',compact('courses'));
}

person maryam    schedule 15.10.2018    source источник
comment
Проверьте отображаемый HTML; Я не уверен, как будет отображаться name="$courses", но на первый взгляд я не думаю, что это будет course_id. Кроме того, вы говорите, что в моем контроллере course_id является строкой. В контроллере я приводил его к целому числу [...], но на самом деле вы приводили $request->courses, а не $request->course_id; нужно сделать более тщательную отладку с вашей стороны.   -  person Tim Lewis    schedule 15.10.2018
comment
Название course_id — это курсы в html-представлении, и я упомянул его в теге select. Даже я получаю все курсы конечно таблицы в списке выбора, на мой взгляд. Я только не могу преобразовать строку в целое число.   -  person maryam    schedule 15.10.2018


Ответы (1)


Если вы используете

select name="$courses"

в вашем HTML вы получите

"$courses" => null, // or 1, 2 etc. 

в вашей переменной $request; доступ к которому будет затруднен. Использовать

select name="courses" <!-- Without the $ -->

И доступ как $request->courses в вашем контроллере.

Примечание. Вам не следует приводить к int из-за того, как PHP обрабатывает типы, но, скорее всего, это не повредит.

person Tim Lewis    schedule 15.10.2018