Возврат дополнительных значений на основе значения базы данных - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь вернуть SVG на основе значения 1,2 or 3 из столбца моей базы данных с именем foo_options.

  • IF 1 return Green SVG
  • IF 2 return Оранжевый SVG
  • IF 3 return Красный SVG

foo_options имеет значение 3 в базе данных. Итак, SVG должен быть красным.

Вот что у меня есть в моей модели:

    public function getOptionValueAttribute(){
        if ('1') {
            return '<svg>Green</svg>';
        }elseif ('2') {
            return '<svg>Orange</svg>';
        }elseif ('3') {
            return '<svg>Red</svg>';
        } else {
            return '';
        }
    }

Тогда мой logi c это:

if($bar->barDetail->some_options = '1' || $bar->barDetail->some_options = '2' || $bar->barDetail->some_options = '3')
{
    dd($bar->barDetail->optionValue);
}

При указанном выше logi c всегда возвращается ЗЕЛЁНЫЙ (1).

Любая помощь в возврате красного будет принята с благодарностью.

1 Ответ

3 голосов
/ 19 июня 2020

Функция getOptionValueAttribute не выполняет никаких внутренних проверок. Вы передаете строку '1' оператору if и if работает с логическим значением. Непустая строка всегда преобразуется в истину, и поэтому вы всегда возвращаетесь зеленым. это 1, 2 или 3. Поэтому я бы подумал, что вам нужно будет передать эту переменную в качестве входных данных для функции, а затем сравнить с ней значение:

public function getOptionValueAttribute($option){
    if ($option == 1) {
        return '<svg>Green</svg>';
    }elseif ($option == 2) {
        return '<svg>Orange</svg>';
    }elseif ($option == 3) {
        return '<svg>Red</svg>';
    } else {
        return '';
    }
}

Таким образом, если вы вызовете функцию, например это (например) вы получите красный:

getOptionValueAttribute(3);

Если вы настаиваете на работе со строками, просто добавьте кавычки вокруг чисел.

Я не знаю, что второй код, который вы показали выше, пытается объяснить. Я не понимаю, что logi c вообще связано с функцией. Обратите внимание, что оператор сравнения == или ===, а не просто =.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...