我正在学习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);
}
到目前为止没有问题...
现在,我想使用validate系统改进我的应用程序。
在我的文件 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'));
}
在我的文件夹 StudentRepository
中的函数 getAll()public function getAll()
{
return Auteur::orderBy('name', 'ASC')->paginate(5);
}
我真的不明白该遵循的语法吗?
答案 0 :(得分:3)
现在,我想使用validate系统改进我的应用程序。
直接在请求上进行控制器中的验证,这是您可以检查的第一件事,因此,如果验证失败,则不会使用不必要的系统资源。
添加有时规则,该规则仅在存在该字段时才检查该字段。
如果您不希望验证程序将空值视为无效,则可以将其标记为可空。
控制器
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);
}