@vincent15000 there are several different pluck methods in the framework - Collection , Query Builder and Eloquent Builder.
The User instance itself has access to all of the Eloquent Builder methods even after a Model instance has been retrieved, so, logic like this will work even though it seems nonsensical.
@tisuchi Yes that's ok for me. And I think that it's also possible to write ->get('email'). I never use this way, but I've already seen that somewhere.
@vincent15000 the result of pluck is different - a Collection of (email) strings - compared with get - a Collection of User object each only having email properties.
The bit not explained is that some functions are 'terminating' for the query builder. first(), find(), get(), paginate() and pluck() and I am sure there are more, all terminate the query builder and run the query.
After find() you end up with a single model against which you are trying to run pluck(), and since it is not a collection, you end up running the query builder pluck against the model the same as if you had run User::pluck('x')
On the other hand, if you had run get()->pluck() you would be calling pluck against the collection and therefore using the collection pluck command not the query builder.
Will return the email of every user in the system because the result of first() is a single user model, so the query builder pluck is run on the entire database.