php - Returning Optional Values based on Database Value

one text

Solution:

The getOptionValueAttribute function is not doing any checks inside. You pass the string '1' to the if operator and if works with boolean. A non empty string is always converted to true and therefore you always return green.

What I assume that you are trying to do is that you wish to check the value of some variable and return different results if it is 1, 2 or 3. Therefore I would think that you will need to pass that variable as input for the function and than compare the value to it:

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

That way if you call the function like this (for example) you will get the Red:

getOptionValueAttribute(3);

If you insist on working with strings, just add the quotes around the numbers.

I don't know what the second code that you shown above is trying to explain. I don't get that logic and how it is related to the function at all. Note that the comparison operator is == or ===, not just =.

Source