首页 > 解决方案 > Laravel 在查询之前更改模型表

问题描述

我需要在查询开始之前从 Laravel 模型中更改查询表。

通常你会这样查询:

ExampleModel::where('column_name', =, 'value')->get();

对于一种情况,我想使用一个视图表,其中包含来自多个表的信息组合在一个视图中。

因此,我只需要为这种情况切换表ExampleModel,例如:

ExampleModel::table('my_view')->where(...)->get();

由于DB::table('my_view')->where(...)->get()需要在ExampleModel.

如我所见,有以下选项:

  1. 以某种方式即时更改模型表名(如上所示)
  2. 创建一个仅在此用例中使用的新模型,其视图定义为模型表
  3. 将我所有的作用域写入一个链式DB命令

还有其他选择吗?

标签: databaselaraveleloquent

解决方案


您可以通过将表名传递给setTable()方法来执行此操作,例如:

$user = new Users();
$user->setTable('customers');
$user->where(id,1)
...

推荐阅读