直接从模型实例化查询构建器

Dav*_*ues 32 model laravel eloquent

当我做类似的事情SomeModel::with('user')时返回一个Query\Builder实例.如何在不需要调用with()(或类似)的情况下获取此实例?

例如,我尝试过:new SomeModel但它显然会返回我的模型的实例,而不是查询构建器(不对我工作).在SomeModel::getQuery没有工作过,因为它返回一个Query\Builder不相关的我的模型.

我需要它来基于一些条件设置.所以最初它需要是空的,就像它:

$someBuilder = SomeModel::getQueryBuilder(); // eg.

if(condition()) {
    $someBuilder->where(...);
}

$someResults = $someBuilder->get();
Run Code Online (Sandbox Code Playgroud)

Jos*_*ber 63

使用静态query方法:

$query = User::query();
Run Code Online (Sandbox Code Playgroud)

此外,您可以使用该when方法将这些条件直接链接到查询构建器本身:

$results = SomeModel::query()->when(condition(), function ($query) {
    $query->where(...);
})->get();
Run Code Online (Sandbox Code Playgroud)

这在功能上等同于命令性if条款.