gpt4 book ai didi

php - 关于 Laravel 关系和性能的问题

转载 作者:行者123 更新时间:2023-12-03 23:45:22 26 4
gpt4 key购买 nike

我希望你过得愉快。我正在学习 Laravel,当你在 Laravel 中加载关系时,导师谈到了,就像这样

    public function timeline()
{
$ids = $this->follows()->pluck('id');
$ids->push($this->id);
return Tweet::whereIn('user_id', $ids)->latest()->get();
}

我在我的模型中有一个跟随关系,他谈到了这条线
$ids = $this->follows()->pluck('id');
性能比这条线更好
$ids = $this->follows->pluck('id');
我的问题是,laravel 如何在第一种情况下提取 id,以及它如何查询数据库
我希望我有道理,感谢您的时间和回答。

最佳答案

以下对数据库执行选择查询$this->follows()->pluck('id');follows()返回 query builder (这是一个尚未执行的 sql 语句)然后在结果上选择 id 列并返回 collectionid
您可以通过 $this->follows()->dd() 转储查询构建器来查看查询
而在第二个选项中$this->follows->pluck('id')直到 $this->follows laravel 执行查询并返回所有记录作为 collection例如,您将能够看到每条记录的所有属性。然后->pluck('id')正在 laravel 集合类上执行,它将执行我认为类似于 array_column 的操作函数执行并仅返回 id柱子。
正如您在第二个操作中可以轻松看到的那样,首先从数据库中检索整个数据集,然后选择所需的属性/列(2 个不同且繁重的操作)。在第一个选项中,我们直接告诉 eloquent 只选择所需的列,与第二个选项相比,这只是一个更轻的操作。

关于php - 关于 Laravel 关系和性能的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63150853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com