关于sql两种计算方式,哪种好呢?
两种在后端计算好佣金以后返回前端的方式,哪种好呢?尽量不要在sql里计算吗?
第一种:
$allList = Merchant::where('ident_status', 10)
->select('id','user_id','store_pic','company_name')
->has('merchant_goods')
->with(['merchant_goods' => function($query) use ($user_prcent) {
$query->select('id', 'merchant_id', 'merchant_pics', 'merchant_goods_title', 'merchant_goods_sell_price', 'merchant_goods_total_price', 'fake_sell_count', 'merchant_goods_prcent')
->addSelect(\DB::raw('(merchant_goods_sell_price * merchant_goods_prcent * '.$user_prcent.') as user_share_income'));
}])
->orderBy('created_at', 'desc')
->paginate(4);
第二种
$allListSql = Merchant::where('ident_status', 10)
->select('id', 'user_id', 'store_pic', 'company_name')
->has('merchant_goods')
->with('merchant_goods:id,merchant_id,merchant_pics,merchant_goods_title,merchant_goods_sell_price,merchant_goods_total_price,fake_sell_count,merchant_goods_prcent')
->orderBy('created_at', 'desc');
$allList = $allListSql->paginate(4);
// 遍历查询结果进行数据处理
foreach ($allList as $item) {
$item->merchant_goods->map(function ($goods) {
$goods->setAttribute('merchant_goods_total_price', $goods->merchant_goods_sell_price * $goods->merchant_goods_prcent);
return $goods;
});
}
// 组装结果
$allList->transform(function ($item) {
$item->setAttribute('merchant_goods', $item->merchant_goods);
return $item;
});
推荐文章: