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 關注
- 125 瀏覽
添加回答
舉報
0/150
提交
取消