【发布时间】:2020-01-25 17:15:21
【问题描述】:
我需要在查询开始之前从 Laravel 模型中更改查询表。
通常你会这样查询:
ExampleModel::where('column_name', =, 'value')->get();
对于一种情况,我想使用一个视图表,其中包含来自多个表的信息组合在一个视图中。
因此我只需要在这种情况下切换ExampleModel的表,例如:
ExampleModel::table('my_view')->where(...)->get();
使用DB::table('my_view')->where(...)->get() 不是一个选项,因为需要在ExampleModel 上应用多个本地范围。
如我所见,有以下选项:
- 以某种方式即时更改模型表名称(如上所示)
- 创建一个仅在此用例中使用的新模型,其视图定义为模型表
- 将我所有的作用域写入链式
DB-command
还有其他选择吗?
【问题讨论】:
-
我不明白您为什么需要为此使用相同的模型。我假设您正在谈论的两个模型彼此之间有关系吗?在这种情况下,您可以使用 laravel.com/docs/6.x/eloquent-relationships 。如果我错了,请纠正我。