看板 PHP 關於我們 聯絡資訊
※ 引述《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