【问题标题】:Laravel - What's the benefit of calling query() method on an Eloquent modelLaravel - 在 Eloquent 模型上调用 query() 方法有什么好处
【发布时间】:2020-10-27 12:57:39
【问题描述】:

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

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

据我所知,他会写:

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

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

【问题讨论】:

    标签: laravel eloquent laravel-query-builder


    【解决方案1】:

    没有区别,不用加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();
    

    【讨论】:

    • 那么,你认为这只是个人喜好?
    • 我几乎同意你的看法。确实没有功能差异(除了您提到的情况),但从开发人员经验的角度来看,例如 PhpStorm 中的自动完成功能在从 query() 方法开始时实际上是正确的。
    • 是的@TheSETJ 这只是个人喜好,我认为人们开始使用它并成为习惯。
    • @AlexBouma 我多年来一直在使用 PhpStorm(Intellij Idea Ultimate)和 Laravel,但从未使用过 query,但它会自动完成,因为它在这里看到 prnt.sc/tdb1v4(两者都是 ide- helper 和 laravel 插件已启用)
    • 很好的解释@Ersoy
    猜你喜欢
    • 1970-01-01
    • 2018-02-26
    • 2015-12-03
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    相关资源
    最近更新 更多