laravel - 最佳实践标准 - Laravel Eloquent/Model 的 SQL 查询
问题描述
我有以下执行良好的 SQL 查询。
SELECT *, (((product_price - product_sell_price) / product_sell_price)*100) as p_discount
FROM `products`
WHERE product_price IS NOT NULL
AND (((product_price - product_sell_price) / product_sell_price)*100) > 25
ORDER BY p_discount DESC
我想在 LARAVEL 最佳实践标准中获得相同的结果。
Controller: ProductController Model: Product
到目前为止我尝试的是:
$discount_range = Config::get('constants.discount_range')[$type];
$products = Product::whereRaw('product_price IS NOT NULL AND (((product_price - product_sell_price) / product_sell_price)*100) BETWEEN '.$discount_range[0].' AND '.$discount_range[1])->orderBy("product_sell_price", $sort_by)->paginate($perpage);
有什么办法我可以做比这更有用的事情。我不想使用 WhereRaw()。
请帮助我改进。谢谢 :)
解决方案
使用 Illuminate\Support\Facades\DB;使用型号\产品;
Product::select('*', DB::raw('((product_price - product_sell_price) / product_sell_price)*100 as p_discount') ->where('p_discount', '>', 25) ->whereNotNull('product_price ') ->orderBy('p_discount', 'desc') )->get();
推荐阅读
- date - Spark SQL - 如何对链接到特定日期的日期范围内的值求和
- python - 条件 NaN 填充不改变列或全部无
- mongodb - 社区服务器的 Mongodb 下载选项不可用
- reactjs - 使用 TypeScript 在 React Native 上传递 refs:(属性)React.MutableRefObject
.current: null 对象可能是 'null'.ts(2531) - flutter - 使用部分选项卡视图和软键盘在颤动中编辑文本
- python - TF对象检测API检测模型再训练:“object_detection.protos.TrainConfig”没有名为“fine_tune_checkpoint_version”的字段
- terraform - 如何通过 terraform_remote_state 获取 VPC 子网 ID?
- reactjs - 附加数据时打字稿给我未定义
- python - 使用 selenium 和 phantomJS 和 python 在 iframe 中获取完全生成的 DOM 元素
- reactjs - 在反应中输出一个非常简单的菜单的最佳方法