如何在基于SQL语句的单个Eloquent模型中使用表和视图?

Mic*_*yen 2 php mysql eloquent laravel-5

使用Laravel 5.1,我创建了一个Eloquent模型:

class Divisions extends Model
{
}
Run Code Online (Sandbox Code Playgroud)

我的数据库中有一个表和一个与该模型相关的视图.

  • divisions_info- 表,它将运行INSERTUPDATE查询,但永远不会SELECT运行它.
  • divisions_view- 视图,它将SELECT只运行查询(显然).

分段的原因是divisions_view视图与divisions_info表中的数据以及相邻数据库中另一个相关的只读表连接.


我想将一个模型用于处理分区的所有内容,但是指向表上的任何UPDATE/ INSERT查询divisions_info以及视图SELECT上的所有查询divisions_view.

Laravel文件允许你覆盖假定表名,如下所示:

protected $table = 'divisions_info';
Run Code Online (Sandbox Code Playgroud)

但是,这优先于整个模型.我希望能够利用Eloquent模型带来的所有内置方法,但是它会在SQL语句中进行相应的拆分.

这可能吗?如果是这样,实现它的正确方法是什么?

如果不可能,在没有意见的情况下,在两个不同的位置使用相同数据的最合乎逻辑/ Laravel式的方式是什么?

Hka*_*kan 5

这可能是一个解决方案:

use Illuminate\Database\Eloquent\Model;

class Division extends Model {
    public function scopeFromView($query)
    {
        return $query->from('divisions_view');
    }
}
Run Code Online (Sandbox Code Playgroud)

只需fromView()在查询的任何部分调用该方法,如下所示:

Division::fromView()->get();
Run Code Online (Sandbox Code Playgroud)