database - Laravel 在查询之前更改模型表
问题描述
我需要在查询开始之前从 Laravel 模型中更改查询表。
通常你会这样查询:
ExampleModel::where('column_name', =, 'value')->get();
对于一种情况,我想使用一个视图表,其中包含来自多个表的信息组合在一个视图中。
因此,我只需要为这种情况切换表ExampleModel
,例如:
ExampleModel::table('my_view')->where(...)->get();
由于DB::table('my_view')->where(...)->get()
需要在ExampleModel
.
如我所见,有以下选项:
- 以某种方式即时更改模型表名(如上所示)
- 创建一个仅在此用例中使用的新模型,其视图定义为模型表
- 将我所有的作用域写入一个链式
DB
命令
还有其他选择吗?
解决方案
您可以通过将表名传递给setTable()方法来执行此操作,例如:
$user = new Users();
$user->setTable('customers');
$user->where(id,1)
...
推荐阅读
- reactjs - 我可以知道我在 react js 中导入了我的组件吗?
- numpy - 试图理解这段代码在做什么
- tcp - gRPC 在 TCP 数据包上设置 PSH 标志
- debugging - 如何使用箭头键在 gdb 命令窗口中编辑命令?
- amazon-web-services - AWS Secrets Manager with Database inside RDS (Postgres) - 如何在 RDS 实例中存储数据库的密码?
- python - 在自定义类中包装记录器时出现问题
- node.js - Expressjs - 同一 URL 上的重复 GET 请求(一种类型的文档,一种类型的文本/html)
- python - 为什么我的代码不断重复问题提示而不是进入条件语句?
- github - 如何将 Github Gist 转移到存储库?
- python - Python 套接字和线程问题