比较控制器上的字符串

时间:2019-07-03 21:12:41

标签: php string laravel laravel-validation

我有一个包含2个项目(胡萝卜和柠檬)的下拉列表。我想将CarrotLemon进行比较。如果是蔬菜,则添加被验证,否则被阻止。

enter image description here

在我的代码中,验证不正确...我的2个值都通过了...

enter image description here

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

        }  
    }

2 个答案:

答案 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');

        }  
    }

希望这对您有帮助。