Исключить строку через выпадающий список - PullRequest
0 голосов
/ 10 июля 2019

У меня есть таблица с именем Student с 1 полем, Level с 3 элементами:

level1, level2, leve3.

В моей форме, если пользователь выбирает level3должно появиться сообщение об ошибке.

Я пробовал это, но это не правильно ...

Редактировать Неопределенная переменная: student

public function update(Request $request, $id)
    { 
    $student = Student::select('level')->where("id", "=", $student->level)->first();

      if($student->level != "level3") {
          return redirect()->route('students.index')
            ->with('error', 'This type of level is not allowed to you!');
       }`

Ответы [ 2 ]

1 голос
/ 11 июля 2019

Я проверил ваш код, я думаю, что была ошибка

public function update(Request $request, $id)
{ 
    $student = Student::select('level')->where("id", "=",$id)->first(); // in this line you have passed  $student->level insted of $id

      if($student && $student->level != "level3") { // here also changes
          return redirect()->route('students.index')
            ->with('error', 'This type of level is not allowed to you!');
      }else{
        return redirect()->back();
     }
}
1 голос
/ 11 июля 2019

У вас еще нет объекта ученика для запроса.Таким образом, когда вы просите найти всех студентов в базе данных, которые имеют уровень, соответствующий $student->level, он всегда потерпит неудачу с неопределенной переменной.У вас нет объекта $student, чтобы вытащить уровень из него.Я предполагаю, что именно поэтому вы выполняете запрос в первую очередь: чтобы получить всех студентов на уровне, запрошенном в форме (через $request).

Если вы хотите, чтобы все студенты в базе данных былиУровень, отправленный из формы, вы можете запросить следующим образом:

 $students = Student::where("level", $request->get('level'))->get();

Это вернет коллекцию студентов любого уровня, отправленных через объект $request в этот метод.

Если вы просто хотите, чтобы какой-либо ученик этого уровня (неважно, какой именно, если его уровень равен тому, что $ request отправил из формы), вы можете использовать эту строку:

$student = Student::where("level", $request->get('level'))->first();

Это даст вам один объект учащегося.

Я не уверен, хотите ли вы найти учащегося по уровню или по идентификатору, поскольку ваши параметры для метода обновления включают в себя оба:

public function update(Request $request, $id){...}

Если вы искали конкретного студента только по идентификатору, вы можете использовать:

$student = Student::find($id);

Это даст вам точного студента, которого вы искали, исходя из id.Ничто другое не имеет значения (не уровень) - это точное совпадение с одним студентом на основе id.

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