使用Laravel 5.1,我创建了一个Eloquent模型:
class Divisions extends Model
{
}
我的数据库中有一个表和一个视图,它们与这个模型相关。
-
divisions_info
-表,它将有INSERT
和UPDATE
查询运行,但永远不会有SELECT
运行在它上面。 -
divisions_view
-视图,它将有SELECT
查询只运行(显然)。
分割的原因是
divisions_view
视图与divisions_info
表和相邻数据库中另一个相关的只读表中的数据连接。
我想利用一个模型处理所有除法,但直接在divisions_info
表上查询UPDATE
/INSERT
,并在divisions_view
视图上查询所有SELECT
。
Laravel文档允许您重写假定的表名,如下所示:
protected $table = 'divisions_info';
然而,这优先于整个模型。我希望能够利用Eloquent模型带来的所有内置方法,但要在SQL语句中相应地进行拆分。
这可能吗?如果是这样,怎样才能实现它呢?
如果这是不可能的,不深入的意见,什么是最合乎逻辑的/拉拉维尔式的方式来处理相同的数据在两个不同的位置?
这可能是一个解决方案:
use Illuminate'Database'Eloquent'Model;
class Division extends Model {
public function scopeFromView($query)
{
return $query->from('divisions_view');
}
}
只需在查询的任何部分像这样调用fromView()
方法:
Division::fromView()->get();