当前位置: 首页 > 知识库问答 >
问题:

如何在Laravel查询生成器中使用全局范围?(没有雄辩的模型)

何玺
2023-03-14

我工作太多mysql大视图。我不想使用雄辩模型的意见。

我创建了“ViewBalance\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!

共有2个答案

江鹏飞
2023-03-14
public function scopeActive($query)
{
    return $query->where('active', true);
}

或者

public function scopeInactive($query)
{
    return $query->where('active', false);
}
井嘉胜
2023-03-14

我已经回答了我自己的问题。因为,我不想把我的问题编辑得更复杂。我想谈谈解决这个问题的办法。

我在Laravel模型中添加了$table_view变量和getView()方法。如果你愿意,你可以为干净的代码创建trait。

可以方便地访问视图。它也是主模型的一部分。

例如

class Account extends Model {

    protected $table = 'accounts';

    protected $table_view = 'view_accounts';

    public function getView()
    {
        return \DB::table($this->table_view)->where('global_scope', 1);
    }

}

拉威尔账户控制员

class AccountController extends Controller {

    public function index()
    {
        $items = (new Account)->getView()->paginate(20);
    }

}

 类似资料:
  • 假设我们正在使用Laravel的查询生成器: 我正在寻找一个等效的SQL: 当我必须键入大量select和WHERE(或者通常在select的列alias中包含别名,并且它在结果数组中使用)时,这将特别有用。如果没有任何表别名,我需要输入更多的内容,所有内容的可读性都会降低。在laravel文档中找不到答案,有什么想法吗?

  • 我使用laravel雄辩到CRUD数据。我的问题是,我不知道如何使用laravel雄辩的ORM进行UNION查询。你能帮我解决我的问题吗 这是我想要在laravel雄辩或查询生成器中实现的示例查询

  • Laravel Eloquent的save()方法实质上是执行查询生成器的工作吗? 查询生成器: 雄辩的: 如果这是真的,那么Eloquent的也是如此吗?我正在看Laravel的官方视频教程,我看到作者在控制器中使用了雄辩的和。这就是查询生成器和雄辩的区别吗?我们可以使用雄辩的内部控制器?

  • 我对雄辩有一个奇怪的问题,我试图做到以下几点: Laravel Framework报告一个错误: Connection.php第761行中的QueryException:SQLSTATE[42000]:语法错误或访问冲突:1055“permission.id”不在GROUP BY中(SQL:选择,作为,

  • 如何使像下面的sql查询这样有说服力的范围 表属性(id,标题,段塞,category_id,location_id,图像) 表类别(id,名称,段塞) 表城市(id,名称,鼻涕虫) 我需要的简单sql查询 我想在模型中创建雄辩的作用域

  • 我有以下三种型号: 类别字段: 分类选项: 当我运行这个查询时,我得到了这个错误: SQLSTATE[42S22]:列未找到: 1054未知列'field ID'在'where子句'(SQL:选择*从其中=3)任何帮助请知道是什么问题!!?