gpt4 book ai didi

php - 如何检查和验证每个用户是否存在某个值并且该值仅包含一次?

转载 作者:行者123 更新时间:2023-11-29 15:54:09 26 4
gpt4 key购买 nike

我正在创建一个咖啡店网站,因为我想学习 Laravel 并且我喜欢咖啡。我有一个仪表板,用户可以在其中管理他的咖啡。他可以手动从各种咖啡中进行选择。通过我的方法,我发现了与该问题相关的 2 个主要问题。

<强>1。问题

假设用户添加了 2 杯咖啡,id 分别为 1 和 2

id  |  user_id  |  selected_coffee  |  created_at  |  updated_at
----------------------------------------------------------------
1 | 1 | 1 | xxxxxxxxxx | xxxxxxxxxx
1 | 1 | 2 | xxxxxxxxxx | xxxxxxxxxx

如果用户按这些顺序选择,因为他可以选择多个。 * 假设他选择了咖啡 ID 1、2 和最后一个 3。*

因为代码检测到第一个 ID 在数据库中,所以它忽略其他值。

<强>2。问题

假设 User1 添加了 2 杯咖啡,id 分别为 1 和 2

id  |  user_id  |  selected_coffee  |  created_at  |  updated_at
----------------------------------------------------------------
1 | 1 | 1 | xxxxxxxxxx | xxxxxxxxxx
1 | 1 | 2 | xxxxxxxxxx | xxxxxxxxxx

用户2可以选择咖啡,但它没有写入我需要在前端直观显示的数据库中

我知道添加 2 个问题不太好,但我的想法是,如果我们可以解决数字 1。问题,那么 2。问题就会消失。

这是我的代码,使其独一无二:

public function store(Request $request)
{
app('App\Http\Controllers\ScoreController')->store($request);

$message = ['selected_coffee.unique' => 'Check Coffee ID already exist'];
$this->validate($request,[
'selected_coffee' => 'unique:manage_coffees',
],$message);


if($request->input('checkedDrink') != null){

foreach ($request->input('checkedDrink') as $selected_id) {

$manage_coffee = new ManageCoffee();

$manage_coffee->user_id = \Auth::user()->id;

$manage_coffee->selected_coffee = (int)$selected_id;

$manage_coffee->save();

}
}

return redirect('dashboard/coffee');
}

我在 StackOverflow 中找到了验证器,但没有得到很好的解释。我想我必须在 ->validate 中添加一个 where 子句,但我不知道应该把它放在哪里。

希望大家能够帮助我。

托斯顿

最佳答案

如果我理解正确,你需要 exist rule但有附加条件,如官方文档中的示例。

类似的事情:

use Illuminate\Validation\Rule;

$this->validate($request,[
'selected_coffee' => [
Rule::exists('manage_coffees')->where(function ($query) {
$query->where('user_id', Auth::user()->id);
//you can specify any conditions you like
}),
],
],$message);

关于php - 如何检查和验证每个用户是否存在某个值并且该值仅包含一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56593348/

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