проверка на хранилище папок - PullRequest
4 голосов
/ 05 июня 2019

Я изучаю Laravel, и я застрял, на самом деле у меня есть папка Repositories с файлом с именем StudentRepository.

В моем контроллере У меня есть это:

public function index(Request $request)
{
   $students = $this->students->getAll();
   return view('admin.students.index', compact('students'));
}

И в моем StudentRepository У меня есть это:

public function getAll()
{
   return Student::oldest()->paginate(5);
}

Пока нет проблем ...

Теперь я хотел бы улучшитьмое приложение с системой проверки.

В моем файле StudentRepository Я должен поставить следующий код:

if ($req->has('search') && !empty($req->search)) {

        $validated = $req->validate([
        'search' => 'alpha', 
        ]);

        $students = Student::where('name', 'LIKE', '%' . $validated['search'] . '%')->orderBy('name', 'ASC')->paginate(5);
        $students->appends($req->only('search'));
        return view('admin.students.index', compact('students'));
}

В моей функции getAll () из моей папки StudentRepository

public function getAll()
{   
        return Auteur::orderBy('name', 'ASC')->paginate(5);
}

Я действительно не понимаю синтаксис, которому нужно следовать?

1 Ответ

3 голосов
/ 05 июня 2019

Теперь я хотел бы улучшить свое приложение с помощью системы проверки.

Выполните проверку в контроллере непосредственно над запросом, это первое, что вы можете проверить, поэтому, если проверка не удастся, вы не будете использовать ненужные системные ресурсы.
Добавьте правило иногда, которое проверяет поле, только если оно присутствует.
И вы можете пометить его как обнуляемый, если вы не хотите, чтобы валидатор считал нулевые значения недействительными.

Контроллер

public function index(Request $request)
{
    $request->validate([
        'search' => 'sometimes|nullable|alpha', 
    ]);
    // assign the value of the request field to a variable, note that the value will be null if the field doen't exist
    $search = $request->search;

    // pass the variable as parameter to the repository function
    $students = $this->students->getAll($search);

    // If you would like to determine if a value is present on the request and is not empty, you may use the filled method
    if ($request->filled('search')) {
        $students->appends($request->only('search'));
    }

    return view('admin.students.index', compact('students'));
}

StudentRepository

// receives the parameter in the function
public function getAll($search)
{
    // here you can use when() method to make this conditional query, note that if the value is null, the condition will not pass
    return  Student::when($search, function ($query) use ($search) {
                $query->where('name', 'LIKE', '%' . $search . '%');
            })
            ->orderby('name', 'asc')
            ->paginate(5);
}
...