Не удается получить доступ к идентификатору, передаваемому в vue.js и laravel

Мне трудно вставить значения, которые являются идентификатором, который передается из формы, в контроллер моей системы регистрации. Для этого я использую vue.js и библиотеку vue-resource. В моем файле all.js я получаю правильное значение идентификатора, когда я console.log передаваемого идентификатора. Однако при передаче его на адрес маршрута моего приложения я получаю ошибку 500. Кроме того, при отладке я получаю эту ошибку SQLSTATE [23000]: нарушение ограничения целостности: 1048 Столбец «section_subject_id» не может быть нулевым (SQL: вставить в reservations. Как я могу это решить?

РезервацияКонтроллер.php

class ReservationController extends Controller
{

    public function create($id)
    {

        $subjects = Subject::with('sections')->get();

        return view('reservation.form',compact('subjects'));
    }

    public function store(Request $request)
    {

        $subject = new Reservation();

        $subject->section_subject_id = $request->input('id');

        $subject->student_id = 1;

        $subject->save();

    }
}

все.js

Vue.http.headers.common['X-CSRF-TOKEN'] = document.querySelector('#token').getAttribute('value');

new Vue({
    el: '#app-layout',

    data: {
        subject: {
            id : ''
        },
        subjects: []

    },
    ready: function(){

    },
    methods:{
        addSubject: function(id){

            this.subject = id;

            this.$http({url: 'http://localhost:8000/reservation', id, method: 'POST'}).then(function(response){

            }, function (response){
                console.log('error');
            });
        }
    }
});

form.blade.php

<body>
  @foreach($subjects as $subject)
  @foreach($subject->sections as $section)
  <tr>
    <td>{{ $section->section_code }}</td>
    <td>{{ $subject->subject_code }}</td>
    <td>{{ $subject->subject_description }}</td>
    <td>{{ $section->pivot->schedule }}</td>
    <td>{{ $subject->units }}</td>
    <td>{{ $section->pivot->room_no }}</td>
    <td>
      <button 
         v-on:click="addSubject( {{ $section->pivot->id }} )" 
         class="btn btn-xs btn-primary">Add
         </button>

       <button class="btn btn-xs btn-info">Edit</button>
     </td>
    </tr>
   @endforeach
  @endforeach
 </body>

person Jearson    schedule 11.05.2016    source источник


Ответы (1)


Попробуйте отформатировать отправляемые данные следующим образом: {id: this.id}

Итак, ваш метод Vue addSubject выглядит так:

    addSubject: function(id){

        this.subject = id;

        this.$http({url: 'http://localhost:8000/reservation', {id: this.id}, method: 'POST'}).then(function(response){

        }, function (response){
            console.log('error');
        });
    }
person crabbly    schedule 11.05.2016