为了账号安全,请及时绑定邮箱和手机立即绑定

根据数据库值返回可选值

根据数据库值返回可选值

PHP
小唯快跑啊 2023-06-18 17:04:35
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);

如果您坚持使用字符串,只需在数字周围添加引号即可。


我不知道你上面显示的第二个代码试图解释什么。我根本不明白这个逻辑以及它与功能的关系。请注意,比较运算符是 == 或 ===,而不仅仅是 =。


查看完整回答
反对 回复 2023-06-18
  • 1 回答
  • 0 关注
  • 71 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信