I can use User::where()
and User::query()->where()
With a query
I get hints in IDE. But are there any other benefits or guidelines?
CodePudding user response:
there is no benefit other than the IDE recognizing the initiation of a query builder instance.
As there is no benefits in not using it, since doing User::where()
will call the magic method:
// Illuminate\Database\Eloquent\Model
public static function __callStatic($method, $parameters) //$method = "where"
{
return (new static)->$method(...$parameters);
}
Which calls the magic method
// Illuminate\Database\Eloquent\Model
public function __call($method, $parameters) //$method = "where"
{
if (in_array($method, ['increment', 'decrement'])) {
return $this->$method(...$parameters);
}
if ($resolver = (static::$relationResolvers[get_class($this)][$method] ?? null)) {
return $resolver($this);
}
return $this->forwardCallTo($this->newQuery(), $method, $parameters); //<---- and will end in here
}
While User::query()
is
// Illuminate\Database\Eloquent\Model
public static function query()
{
return (new static)->newQuery();
}
So using User::query()
helps the IDE and leads to less steps but basicly it's the same thing. (performance difference between both methods is negligible in our times)