Слишком мало аргументов для функции laravel 5.7 - PullRequest
0 голосов
/ 28 января 2019

Я хочу запросить в БД, используя два параметра, которые будут необязательными, поэтому я определил маршрут как:

web.php

Route::get('question/{subject?}/{sbj_type?}', 'QuestionController@index')->name('question.index');

После этогоЯ сделал функцию в QuestionController.php как:

public function index($subject = null, $sbj_type = null)
{
    $questions;
    if (!$subject) {
        dd($subject);
        if (!$sbj_type) {
            $questions = Question::where(['subject_id' => $subject, 'sbj_type_id' => $sbj_type])->get();
        }
        else {
            $questions = Question::where(['subject_id' => $subject])->get();
        }
    }
}

После этого я вставил URL как http://localhost/digitalinvigilator/question?subject=1, но каждый раз получаю ноль.

Кто-нибудь может помочь?

Ответы [ 3 ]

0 голосов
/ 28 января 2019

Попробуйте это с $ request

На вашем Route / Web.php

Route::get('question', 'QuestionController@index')->name('question.index');

На вашем контроллере

public function index(Request $request){
  $questions;
  if ($request->subject) {
    if (!$request->sbj_type) {
        $questions = Question::where(['subject_id' => $request->subject, 'sbj_type_id' => $request->sbj_type])->get();
    }
    else {
        $questions = Question::where(['subject_id' => $request->subject])->get();
    }
  }
}
0 голосов
/ 28 января 2019

Чтобы использовать его, как вы указали, вы должны использовать метод query для объекта Request.

У вас также есть ошибка в вашем первом случае, если вы проверяете, что $subject являетсяложное значение.Поэтому, если !$subject равно true, оно будет продолжаться, поэтому ваш dd($subject) всегда будет выводить null или ложное значение.Так что используйте это так:

public function index(Request $request)
{
    $questions;
    if ($request->query('subject')) {
        dd($subject);
        if ($request->query('sbj_type')) {
            $questions = Question::where(['subject_id' => $request->query('subject'), 'sbj_type_id' => $request->query('sbj_type')])->get();
        } else {
            $questions = Question::where(['subject_id' => $request->query('subject'))->get();
        }
    }
}

источник: https://laravel.com/docs/5.7/requests#retrieving-input

0 голосов
/ 28 января 2019

Я полагаю, вы используете Request для доступа к параметру запроса.

public function index(Request $request, $subject = null, $sbj_type = null)
{
$questions;
if (!$request->has('subject)) {
    dd($subject);
    if (!$sbj_type) {
        $questions = Question::where(['subject_id' => $subject, 'sbj_type_id' => $sbj_type])->get();
    }
    else {
        $questions = Question::where(['subject_id' => $subject])->get();
    }
}
}

Условие может быть другим в соответствии с вашим требованием в If

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