我有一个包含2个项目(胡萝卜和柠檬)的下拉列表。我想将Carrot
与Lemon
进行比较。如果是蔬菜,则添加被验证,否则被阻止。
在我的代码中,验证不正确...我的2个值都通过了...
public function store(Request $request)
{
$this->validate($request, [
'vegetables' => 'required|min:3'
]);
$listVegetable = Exo::where('vegetables', $request->get('vegetables'))->count();
$word = "Carrot";
if ($listVegetable == $word){
Exo::create($request->all());
return redirect()->route('exos.index')
->with('success', 'new data created successfully');
}
else{
return redirect()->route('exos.index')
->with('error', 'Not vegetable');
}
}
答案 0 :(得分:1)
通过$listVegetable = Exo::where('vegetables', $request->get('vegetables'))->count();
,您可以将数据库中的蔬菜量作为整数值获得。因此,与carrot
字符串进行比较是没有意义的。您需要编写first()
而不是count()
,然后我猜您需要访问此对象的-> name属性,具体取决于模型具有哪些行。
答案 1 :(得分:0)
好吧,主要思想是验证字符串是否在表中,那么您将采用这种方式,只需验证字符串是否在表中:
public function store(Request $request)
{
$this->validate($request, [
'vegetables' => 'required|min:3'
]);
$vegetable = Exo::where('vegetables', $request->get('vegetables'))->first();
if ($vegetable){
Exo::create($request->all());
return redirect()->route('exos.index')
->with('success', 'new data created successfully');
}
else{
return redirect()->route('exos.index')
->with('error', 'Not vegetable');
}
}
另一方面,如果您想对Exo表进行分类,则需要另一个列,例如一个名为“ type”的列,那么代码看起来像您的主代码(尽管可以改进):
public function store(Request $request)
{
$this->validate($request, [
'vegetables' => 'required|min:3'
]);
$vegetable = Exo::where('vegetables', $request->get('vegetables'))->first();
$word = "vegetable";
if ($vegetable && $vegetable->type == $word){
Exo::create($request->all());
return redirect()->route('exos.index')
->with('success', 'new data created successfully');
}
else{
return redirect()->route('exos.index')
->with('error', 'Not vegetable');
}
}
希望这对您有帮助。