1,2 or 3我试图根据我的数据库列中名为 的值返回一个 SVG foo_options。如果 1 返回绿色 SVG如果 2 返回橙色 SVG如果 3 返回红色 SVGfoo_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 ''; } }那么我的逻辑是:if($bar->barDetail->some_options = '1' || $bar->barDetail->some_options = '2' || $bar->barDetail->some_options = '3'){ dd($bar->barDetail->optionValue);}根据以上逻辑,总是返回 GREEN (1)。任何返回 Red 的帮助将不胜感激。
1 回答
炎炎设计
TA贡献1808条经验 获得超4个赞
getOptionValueAttribute函数没有在内部进行任何检查。您将字符串“1”传递给if运算符,并且if与布尔值一起使用。非空字符串始终转换为 true,因此您始终返回绿色。
我假设您正在尝试做的是您希望检查某个变量的值并返回不同的结果(如果它是 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);
如果您坚持使用字符串,只需在数字周围添加引号即可。
我不知道你上面显示的第二个代码试图解释什么。我根本不明白这个逻辑以及它与功能的关系。请注意,比较运算符是 == 或 ===,而不仅仅是 =。
- 1 回答
- 0 关注
- 101 浏览
添加回答
举报
0/150
提交
取消