Laravel: How does the query builder handle ->first()?

4.3k views Asked by At

How does the query builder handle ->first()?

Does it simply do a Limit 1 or does it do some advanced checking to make sure if only 1 row is returned?

In rare cases, the application may want to ensure that ONLY 1 row will be returned. Perhaps ->first() is not the best solution?

Any insight or direction is greatly appreciated!

1

There are 1 answers

0
lukasgeiter On BEST ANSWER

The first() method will always return one result or null if no results are found. Here's all it does:

public function first($columns = array('*'))
{
    $results = $this->take(1)->get($columns);

    return count($results) > 0 ? reset($results) : null;
}

The difference to just using take(1) (or limit(1)) is that it actually just returns one result object, by calling reset(). (Also, first() obviously executes the query. The others don't)