Mic*_*yen 2 php mysql eloquent laravel-5
使用Laravel 5.1,我创建了一个Eloquent模型:
class Divisions extends Model
{
}
Run Code Online (Sandbox Code Playgroud)
我的数据库中有一个表和一个与该模型相关的视图.
divisions_info- 表,它将运行INSERT和UPDATE查询,但永远不会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式的方式是什么?
这可能是一个解决方案:
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)
| 归档时间: |
|
| 查看次数: |
1436 次 |
| 最近记录: |