gpt4 book ai didi

php - 文件夹存储库上的验证

转载 作者:可可西里 更新时间:2023-10-31 23:12:46 26 4
gpt4 key购买 nike

我正在学习 Laravel,但我被卡住了,实际上我有一个文件夹 Repositories,其中包含一个名为 StudentRepository 的文件。

在我的 Controller 我有这个:

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'));
}

关于我的文件夹 StudentRepository 的函数 getAll()

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

我真的不明白要遵循的语法?

最佳答案

Now, I would like to improve my Application with the validate system.

直接在 Controller 中对请求进行验证,这是您可以检查的第一件事,因此如果验证失败,您将不会使用不必要的系统资源。
添加 sometimes 规则,仅当该字段存在时才检查该字段。
如果您不希望验证器将空值视为无效,则可以将其标记为可为空。

Controller

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'));
}

学生资料库

// 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);
}

关于php - 文件夹存储库上的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56466547/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com