gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 01:28:01 25 4
gpt4 key购买 nike

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

class Divisions extends Model
{
}

我的数据库中有一个与此模型相关的表和 View 。

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

The reason for the segmentation is that the divisions_view view joins with data from the divisions_info table and from another relevant, read-only table in an adjacent database.


我想对所有涉及部门的事情使用一个模型,但是将任何 UPDATE/INSERT 查询指向 divisions_info 表,并且divisions_view View 上的所有 SELECT 查询。

Laravel documentation允许您覆盖假定的表名,如下所示:

protected $table = 'divisions_info';

但是,这优先于整个模型。我希望能够利用 Eloquent 模型附带的所有内置方法,但将其相应地拆分到 SQL 语句中。

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

如果不可能,那么在不深入探讨的情况下,在两个不同位置处理相同数据的最合乎逻辑/Laravel 风格的方式是什么?

最佳答案

这可能是一个解决方案:

use Illuminate\Database\Eloquent\Model;

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

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

Division::fromView()->get();

关于php - 如何在基于 SQL 语句的单个 Eloquent 模型中使用表和 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30741726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com