php - Laravel:有没有办法删除数据库查询子句?
问题描述
假设我的店铺模型有如下产品关系:
// shop model class
public function products()
{
return $this->hasMany(Model\Product::class)
->orderBy('name');
}
有没有办法让客户端代码(例如我的控制器)删除该orderBy()
子句?
解决方案
是的,有一种方法可以做到这一点,比如在你的控制器中你想获取一些产品
\App\Products::latest()->getQuery();
getQuery()
是一种查询构建器方法,其中包含您正在访问或尝试构建的查询的所有分组、选择、订单、位置、连接等。
所以你可以像这样重置排序:
\App\Products::latest()->getQuery()->orders= [];
因为在 Laravel eloquent 查询构建器中,选择、分组、排序存储为键值数组,您只需将其设置为空数组即可重置所有先前的状态。
例如分组:
\App\Products::latest()->getQuery()->groupings =[];
推荐阅读
- python - 如何避免在 Django 中基于函数的视图中重复代码?
- c# - C# 编译器:来自 lambda 的类
- node.js - BashScript 停止/永远不会在没有任何错误消息的情况下完成
- android - 如何禁用 ViewPager 滑动并使用按钮单击启用手动滑动
- junit - Junit 测试用例未针对模拟 JPA 运行
- scala - 尝试放置数据时,Aplakka scala s3 连接器挂起
- mongodb - Mongo查询在地图内搜索字符串
- sql - SQL 模式设计:两张表与向同一张表中添加列
- mysql - CUBE 函数是否从 MySQL 8.0 中无法使用?
- r-markdown - 如何减少Rmarkdown的pdf_output中标题和内容之间的空间