作者liaosankai (低温烘焙)
看板PHP
标题Re: [请益] Laravel ORM 问题
时间Wed Aug 21 12:58:44 2013
※ 引述《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