404 при использовании переменной в URL-адресе: ошибка: нет результатов запроса для модели [App \ Models \ Seeker] - PullRequest
0 голосов
/ 06 ноября 2019

Я звоню от угловой передней стороны к моей задней части. Когда я использую переменную в URL (USERID), она выдает ошибку 404.

Когда я удаляю USERID из URL, он работает и достигает функции на сервере.

Клиентская сторона:

  getSeeker(userID: number) {
    return this.http.get(`${this.endPoint}/${userID}/getSeekerProfile`, 
      {headers: this.getTokenHeaders()})
  }

На стороне сервера:

    Route::get('candidate/{userID}/getSeekerProfile',   'CandidateController@getSeekerProfile');

Ошибка на стороне клиента:

GET http://localhost:8000/api/headhunter/candidate/363/getSeekerProfile 404 (Not Found)

Ошибка на стороне сервера:

message: "No query results for model [App\Models\Seeker]."

targted function (getSeekerProfile): PS - я также попытался просто вернуть dd ('достигли') и удалить параметр (User $ userID).

    public function getSeekerProfile(User $userID)
    {
        dd($userID);
    }

Не могу действительно найти проблему. Я даже не использую модель Seeker в отношении этого куска кода.

Любые идеи будут приветствоваться.

Спасибо.

PS - возможно, это поможет: Тамявляется промежуточным продуктом перед маршрутом

Route::group(['prefix' => 'headhunter','middleware' => ['AuthHeadhunter']], function () {

, и он даже не идет внутри него. Возможно ли, что во время запроса он сначала проходит через другое место?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

ОК, так что, кто бы ни был заинтересован -> ответ был найден! У меня было два маршрута один за другим:

Route::get('candidate/{seeker}/{jobID}','CandidateController@show');
Route::get('candidate/{userID}/getSeekerProfile','CandidateController@getSeekerProfile');

Проблема была в порядке маршрутизации . запрос всегда поступал в первый маршрутизатор, потому что в теории первый маршрут имеет две переменные (seeker & jobID), поэтому потенциально они могут быть любыми:

Route::get('candidate/{can be anything}/{can be anything}','CandidateController@show');

, поэтому laravel посмотрел на первый URL (с двумя переменными)равным второму маршруту:

get('candidate/{can be anything}/{can be anything}','CandidateController@show');

is the same as:

get('candidate/{can be anything}/getSeekerProfile','CandidateController@getSeekerProfile');

Только если мы сначала введем маршрут с двумя переменными , так что он введет первый маршрут (что было неверно), решение было изменить их порядок:

Route::get('candidate/{userID}/getSeekerProfile','CandidateController@getSeekerProfile');
Route::get('candidate/{seeker}/{jobID}','CandidateController@show');

теперь laravel не будет сбит с толку, потому что "getSeekerProfile" не является переменной, поэтому он будет знать, как войти внутрь.

В своем первоначальном посте я показал только один маршрут, потому что ядаже не рассматривал это как проблему. Спасибо всем, кто пытался помочь, и извините за первоначальное непреднамеренное отсутствие информации.

0 голосов
/ 06 ноября 2019

публичная функция getSeekerProfile (User $ userID), эта строка отправляет запрос на $ userID пользователю User Model. Но у модели пользователя нет этого $ userID => 363. Таким образом, вы можете сохранить эту модель пользователя Id или использовать

* 1002. *

вместо

getSeekerProfile(User $userID) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...