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