Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 查询前的Laravel更改模型表_Database_Laravel_Eloquent - Fatal编程技术网

Database 查询前的Laravel更改模型表

Database 查询前的Laravel更改模型表,database,laravel,eloquent,Database,Laravel,Eloquent,我需要在查询开始之前从Laravel模型更改查询的表 通常,您会进行如下查询: ExampleModel::where('column_name', =, 'value')->get(); 对于一种情况,我想使用一个视图表,它包含来自组合在一个视图中的多个表的信息 因此,我只需要为这一种情况切换ExampleModel表,例如: ExampleModel::table('my_view')->where(...)->get(); 使用DB::table('my_view')

我需要在查询开始之前从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)
    ...
    

    处理此问题的laravel方法是为您的视图提供一个专用模型,其范围适用于每个相关模型:

    
    
    我不明白你为什么要用同样的型号。我想你所说的两个模特都有关系吧?在这种情况下,您可以使用。如果我错了,请纠正我。