使用Laravel 5.1,我创建了一个Eloquent Model:
class Divisions extends Model
{
}
我的数据库中有一个表和一个与该模型相关的视图。
divisions_info
- 该表格会运行INSERT
和UPDATE
个查询,但不会在其上运行SELECT
。divisions_view
- 视图,它只会SELECT
个查询运行(显然)。分段的原因是
divisions_view
视图与来自divisions_info
表的数据以及相邻数据库中另一个相关的只读表连接。 < / p>
我想将一个模型用于处理各个部分的所有内容,但是指向UPDATE
表上的所有INSERT
/ divisions_info
个查询以及所有SELECT
个查询divisions_view
查看。
Laravel documentation允许您覆盖假定的表名,如下所示:
protected $table = 'divisions_info';
但是,这优先于整个模型。我希望能够利用Eloquent模型带来的所有内置方法,但是它会在SQL语句中进行相应的拆分。
这可能吗?如果是这样,实现它的正确方法是什么?
如果不可能,不考虑意见,在两个不同的位置使用相同数据的最合乎逻辑/ Laravel式的方法是什么?
答案 0 :(得分:5)
这可能是一个解决方案:
use Illuminate\Database\Eloquent\Model;
class Division extends Model {
public function scopeFromView($query)
{
return $query->from('divisions_view');
}
}
只需在查询的任何部分调用fromView()
方法,如下所示:
Division::fromView()->get();