※ 引述《chan15 (ChaN)》之銘言:
: 假設我要撈出一個區間的產品,例如說
: return View::make('product')->with(
: 'products' => Product::where('id', '>', 10)->take(6)->get()
: );
: 假設 product 有原價跟特價要計算折數秀出
: price 100
: sell_price 75
: view 要帶出 75 (75 折)
: 我知道可以在 view 下邏輯計算,但還要加上沒有折數時不秀那些 if logic
: 好像違背了 view 力求簡潔的屬性,不知道是否可以在 model 端做掉計算
: 那 view 只要下 @if ($discount != 0){{ $discount }} @endif
### 假設 table 結構如下
==============
products
--------------
id 識別碼
name 名稱
price 原價
sell_price 特價
==============
### 解法一:直接刻計算過後的 SQL 語法
$query = '*, ROUND(
CASE WHEN
sell_price < 100
THEN
price * sell_price/100
ELSE
price
END
) AS show_price';//最後要顯示的價錢
$products = Product::select(DB::raw($query))
->where('id','>',10)
->take(6)
->get();
return View::make('product')->with('products', $products);
### 解法二:將資料處理後再輸出
$products = Product::where('id','>',10)
->take(6)
->get()
->toArray();
foreach($products as $key => $row) {
//下二行只是為了將變數名稱縮短,無義意
$sp = $row['sell_price'];
$p = $row['price'];
$row['show_price'] = ($sp < 100)? $sp : $p;
$product[$key] = $row;
}
return View::make('product')->with('products', $products);
最後只要在視圖(view)中,直接都以 show_price 為最終的顯示即可。
--
歡迎來我的網誌看看
@ http://blog.liaosankai.com
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.203.50.60