@kevinjohn The first() is actually used by find() behind the scenes.
The get() executes the select query.
Foo::get(); // SELECT * FROM foos;
The first() also calls get() behind the scenes but with a limit of 1...
Foo::first(); // SELECT * FROM foos LIMIT 1;
...and then gets the first item of the Collection to return a Model. Its the first equivalent of typing
Foo::take(1)->get()->first();
^ Note the first() here is a method on the Collection, not the Query Builder first().
Its just chaining like doing the short way of.
$foos = Foo::get(); // Collection
$foo = $foos->first(); // get the first Model from the Collection