Laravel - 在 Eloquent 模型上调用 query() 方法有什么好处

Laravel - What's the benefit of calling query() method on an Eloquent model

在 Jonathan Reinink 的“Eloquent 性能模式”课程中,我看到他在编写实际查询之前在他的 Eloquent 模型上调用 query() 方法。让我举个例子:

User::query()
    ->with('company')
    ->paginate()

据我所知,他会写:

User::with('company')
    ->paginate()

我在他的课程中多次看到这种做法。这在我脑海中提出了一个问题:这样做有什么好处还是只是个人喜好?

没有区别,不用加query()。实例化与此类似的案例的查询是实用的;

$user = User::query();
        
if (true) { // check some condition and append query condition(s)
    $user->with('company');
}
        
return $user->paginate();

但后来 when 方法出现了,这样做变得更容易了;

return User::query()
    ->when(true, function (Builder $builder) {
        $builder->with('company');
    })
    ->paginate();