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();
在 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();