【发布时间】:2019-05-23 13:02:06
【问题描述】:
我正在处理太多的 mysql 大视图。我不想为视图使用 Eloquent 模型。
我创建了“ViewBalance 扩展了 Illuminate\Support\Facades\DB”。一切都如我所愿。
但我需要为公司范围设置 init() 方法。
如何在没有 init() 方法的情况下使用全局作用域?
视图模型
<?php
namespace App\Models\Views;
use App\Facades\CoreService;
use Illuminate\Support\Facades\DB;
class ViewBalance extends DB
{
const COMPANY_COLUMN = 'company_id';
const TABLE = 'view_balances';
public static function init()
{
return parent::table(self::COMPANY_COLUMN)
->where(self::COMPANY_COLUMN, CoreService::companyId());
}
}
在控制器中
<?php
$data = ViewBalance::init()->get(); // Worked!
【问题讨论】:
-
我没听懂你的问题。你能解释一下你真正想做什么吗?
-
感谢您的评论。 laravel.com/docs/5.7/eloquent#global-scopes 就像 DB Query Builder 中的那样。有什么办法吗?