Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 如何向查询生成器声明全局作用域_Laravel_Eloquent_Query Builder_Laravel 6 - Fatal编程技术网

Laravel 如何向查询生成器声明全局作用域

Laravel 如何向查询生成器声明全局作用域,laravel,eloquent,query-builder,laravel-6,Laravel,Eloquent,Query Builder,Laravel 6,我以前使用过作用域,但只在模型上使用过,我想知道如何将作用域应用于查询生成器 DB::table('my_table')->[...] -> Apply scope1 DB::table('my_table2')->[...] -> Apply scope2 基本上,如何基于表名映射作用域,但使用生成器 最后,我想实现的是:如果使用雄辩的applyscope1[目前为止效果良好],使用model X(具有表:demo_table),但当我直接使用生成器时,它也

我以前使用过作用域,但只在模型上使用过,我想知道如何将作用域应用于查询生成器

DB::table('my_table')->[...]    -> Apply scope1
DB::table('my_table2')->[...]   -> Apply scope2
基本上,如何基于表名映射作用域,但使用生成器

最后,我想实现的是:如果使用雄辩的applyscope1[目前为止效果良好],使用model X(具有表:demo_table),但当我直接使用生成器时,它也将应用scope1


编辑:类似于Laravel 4的实现

下面可能会有帮助。我不确定这是不是一个好办法

use App\Http\Traits;

trait CustomQueryBuilder{

    public $query = null;

    public function __construct($table_name) {
        $this->query = DB::table($table_name)
    }

    public function TodayCreated_at(){
        return $query->whereDate('created_at', now()->today());
    }
}
或者你可以参考这篇文章。这将帮助您了解如何扩展查询生成器功能


也许下面的特质会对你有所帮助。我不确定这是不是一个好办法

use App\Http\Traits;

trait CustomQueryBuilder{

    public $query = null;

    public function __construct($table_name) {
        $this->query = DB::table($table_name)
    }

    public function TodayCreated_at(){
        return $query->whereDate('created_at', now()->today());
    }
}
或者你可以参考这篇文章。这将帮助您了解如何扩展查询生成器功能

Laravel的Scope::apply()方法要求向其传递一个模型(请参阅:illumb\Database\elounce\Scope)。当然,您可以构建一些模仿作用域行为的东西,但不幸的是,Laravel似乎不直接使用其作用域接口支持DB。

Laravel的Scope::apply()方法需要向其传递一个模型(请参阅:illumb\Database\Eloquent\Scope)。当然,您可以构建一些模仿作用域行为的东西,但不幸的是,Laravel似乎不直接使用其作用域接口支持DB