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