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.

Share:
24,073
David Rodrigues
Author by

David Rodrigues

Updated on February 23, 2020

Comments

  • David Rodrigues
    David Rodrigues about 4 years

    When I do something like SomeModel::with('user') it returns a Query\Builder instance. How can I get this instance without need call the with() (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). The SomeModel::getQuery not works too, because it returns a Query\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();