Laravel 直接从模型中引用查询生成器
当我执行类似于Laravel 直接从模型中引用查询生成器,laravel,model,eloquent,Laravel,Model,Eloquent,当我执行类似于SomeModel::with('user')的操作时,它将返回一个Query\Builder实例。如何在不需要调用with()(或类似)的情况下获取此实例 例如,我尝试了它:newsomemodel,但它显然会返回我的模型的实例,而不是查询生成器(对我来说不起作用)。SomeModel::getQuery也不起作用,因为它返回一个与我的模型不相关的Query\Builder 我需要根据一些条件进行设置。所以一开始它需要是空的,比如: $someBuilder = SomeMode
SomeModel::with('user')
的操作时,它将返回一个Query\Builder
实例。如何在不需要调用with()
(或类似)的情况下获取此实例
例如,我尝试了它:newsomemodel
,但它显然会返回我的模型的实例,而不是查询生成器(对我来说不起作用)。SomeModel::getQuery
也不起作用,因为它返回一个与我的模型不相关的Query\Builder
我需要根据一些条件进行设置。所以一开始它需要是空的,比如:
$someBuilder = SomeModel::getQueryBuilder(); // eg.
if(condition()) {
$someBuilder->where(...);
}
$someResults = $someBuilder->get();
使用静态
查询方法:
$query=User::query();
此外,您可以使用when
方法将这些条件直接链接到查询生成器本身:
$results=SomeModel::query()->when(条件(),函数($query){
$query->where(…);
})->get();
这在功能上相当于命令式的if
子句。getQuery
方法确实返回与模型相关的生成器。