Instance the query builder directly from model
24,073
Use the static query
method:
$query = User::query();
Additionally, you can use the when
method to chain these conditionals directly onto the query builder itself:
$results = SomeModel::query()->when(condition(), function ($query) {
$query->where(...);
})->get();
This is functionally equivalent to the imperative if
clause.
Author by
David Rodrigues
Updated on February 23, 2020Comments
-
David Rodrigues about 4 years
When I do something like
SomeModel::with('user')
it returns aQuery\Builder
instance. How can I get this instance without need call thewith()
(or similar)?For instance, I tried it:
new SomeModel
, but it'll returns obviously the instance of my model, not the query builder (not worked to me). TheSomeModel::getQuery
not works too, because it returns aQuery\Builder
not related to my model.I need it to I setup based on some conditionals. So initially it need be empty, like it:
$someBuilder = SomeModel::getQueryBuilder(); // eg. if(condition()) { $someBuilder->where(...); } $someResults = $someBuilder->get();