Отображение неверных результатов при работе со многими отношениями в Laravel - PullRequest
0 голосов
/ 07 ноября 2018

У меня много-много связей между моделью фильма и моделью актера в моем проекте. Когда я пытаюсь обновить свой фильм с актерами в моей базе данных, он показывает правильные результаты, но когда я смотрю на него, он показывает актеров, отличных от тех, кто находится в базе данных. Вот мой код:

edit.blade.php view:

               <div class="col-md-6">
                    {!! Form::model($movie, ['method'=>'PATCH', 'action'=> ['MovieController@update', $movie->id]]) !!}
                <div class="form-group">
                    {!! Form::label('movie_name', 'Name:') !!}
                    {!! Form::text('movie_name', null, ['class'=> 'form-control'])!!}
                </div>
                <div class="form-group">
                    {!! Form::label('actor_name', 'Actors:') !!}
                    {!! Form::select('actor_name[]', $actors, null, ['class'=> 'form-control js-example-basic-multiple', 'multiple' => 'multiple'])!!}
                </div>
                <div class="form-group">
                    {!! Form::submit('Update Movie', ['class'=>'btn btn-primary col-md-6']) !!}
                </div>
                {!! Form::close() !!}
                {!! Form::open(['method'=>'DELETE', 'action'=> ['MovieController@destroy', $movie->id]]) !!}
                <div class="form-group">
                    {!! Form::submit('Delete Movie', ['class'=>'btn btn-danger col-md-6']) !!}
                </div>
                {!! Form::close() !!}
                </div>
                @section('scripts')
                   <script type="text/javascript">
                      $(document).ready(function() {
                        $('.js-example-basic-multiple').select2();
                        $('.js-example-basic-multiple').select2().val({!! json_encode($movie->actors()->allRelatedIds()) !!}).trigger('change');
 });
                   </script>
                @endsection

MovieController:

           public function edit($id)
           {
              $movie = Movie::findOrFail($id);
              $actors = Actor::pluck('actor_name');
              return view('movies.edit', compact('movie', 'actors'));
           }


           public function update(MovieRequest $request, $id)
           {
              DB::beginTransaction();
              try {
                    $movie = Movie::findOrFail($id);
                    $movie->update($request->all());
                    if (isset($request->actors)) {
                    $movie->actors()->sync($request->actors);
                    } else {
                    $movie->actors()->sync([]);
                    }
                    DB::commit();
                    } catch (\Exception $e) {
                    DB::rollBack();
                    }
                    Session::flash('success', 'A movie was successfully UPDATED in the database!');
                    return redirect()->route('movies.index', $movie->id);
                    }
...