Сравнить строку на контроллере - PullRequest
0 голосов
/ 04 июля 2019

У меня есть выпадающий список с 2 предметами (морковь и лимон). Я хочу сравнить Carrot с Lemon. Если это овощ, добавление проверяется или блокируется в форме.

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 ]

1 голос
/ 04 июля 2019

С $listVegetable = Exo::where('vegetables', $request->get('vegetables'))->count(); вы получаете количество овощей в вашей базе данных как целочисленное значение.Так что ваше сравнение со строкой carrot не имеет смысла.Вы хотите написать first() вместо count(), и тогда, я думаю, вам нужно получить доступ к свойству -> name этого объекта, в зависимости от того, какие строки есть в вашей модели.

0 голосов
/ 04 июля 2019

Хорошо, основная идея состоит в том, чтобы проверить, находится ли строка в таблице, тогда вы должны пойти по этому пути, просто проверьте, находится ли строка в таблице:

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

        }  
    }

Надеюсь, это поможет вам.

...