Laravel маршруты возвращают неверную модель для просмотра - PullRequest
0 голосов
/ 29 апреля 2020

Мои маршруты 'show' и 'edit' в моем приложении Laravel извлекают правильную модель с помощью красноречивого запроса, но модель, возвращаемая в представление, всегда одинакова. Я очистил свой кэш маршрутов, но не повезло.

Веб-маршруты:

    Route::get('/teams/{id}/edit', function($id) {
        $team = \App\Team::find($id);
        return view('teams.edit', ['team', $team]);
    });

Независимо от того, какой идентификатор передан в функцию, представление всегда показывает команду с идентификатором 9

Странно, если я возвращаю команду в закрытии маршрута, она отображает правильную команду.

Результат dd($team)

Team {#479 ▼
  -name: null
  -company_id: null
  #fillable: array:2 [▼
    0 => "name"
    1 => "company_id"
  ]
  #connection: "mysql"
  #table: "teams"
  #primaryKey: "id"
  #keyType: "int"
  +incrementing: true
  #with: []
  #withCount: []
  #perPage: 15
  +exists: true
  +wasRecentlyCreated: false
  #attributes: array:6 [▼
    "id" => 31
    "company_id" => 14
    "name" => "Initial 3 5.0"
    "current_session_id" => 0
    "created_at" => "2019-12-30 16:17:40"
    "updated_at" => "2019-12-30 16:17:40"
  ]
  #original: array:6 [▼
    "id" => 31
    "company_id" => 14
    "name" => "Initial 3 5.0"
    "current_session_id" => 0
    "created_at" => "2019-12-30 16:17:40"
    "updated_at" => "2019-12-30 16:17:40"
  ]
  #changes: []
  #casts: []
  #dates: []
  #dateFormat: null
  #appends: []
  #dispatchesEvents: []
  #observables: []
  #relations: []
  #touches: []
  +timestamps: true
  #hidden: []
  #visible: []
  #guarded: array:1 [▶]
}

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Виновником было представление composer внутри AppServiceProvider ...

        //compose all the views....
        view()->composer('*', function ($view) 
        {
            if (Auth::check()){

                $team = Team::find(Auth::user()->team_id);
                $view->with('team', $team );    
            }
        });  
0 голосов
/ 29 апреля 2020

попробуйте мой пример ниже

Route::get('/teams/{id}/edit', function($id) {
        $team = \App\Team::find($id);
        return view('teams.edit')->with('team', $team);
    });

У вас есть три варианта, как правило, для передачи массива в представления.

return view('teams.edit')->with('team', $team);

return view('teams.edit')->withTeam($team);

return view('teams.edit')->with(compact('team'));

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

{{$team->id}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...