gpt4 book ai didi

php - 获取与每一行有关系的大量行

转载 作者:行者123 更新时间:2023-11-29 05:46:59 25 4
gpt4 key购买 nike

我在 documentation 中找到了 chunk 方法这有助于检索数以千计的记录。虽然,目前还不清楚获取相关模型的效率如何。现在我最好的尝试:

Student::chunk(100, function ($students){
foreach ($students as $student){
$student->with(['campus','program','group'])->get();
};
});

这让我得到了 1996ms 的结果; 2009 次查询,其中 1996 次重复。这是在一个测试环境中,我在 students 表中有 3500 行。

在产品环境中,它将超过 23k 行。如果模型 studentcampusesprogramsbelongsTo 关系,如何改进查询数据和 groups 表?

Student.php

public function campus()
{
return $this->belongsTo(Campus::class);
}

public function program()
{
return $this->belongsTo(Program::class);
}

public function group()
{
return $this->belongsTo(Group::class);
}

第二个问题是,如何将数据发送到 Blade 服务器?我想只是把它放在一个变量而不是解决方案中,因为变量可能会耗尽内存......或者我错了?

更新:@Pavel Lint 的提示显着减少了查询量,但仍然有一半是重复的:

enter image description here

最佳答案

我认为如果相反,你会过得更好:

Student::with(['campus','program','group'])->chunk(100, function ($students){
// your logic here
});

要将所有数据发送到 Blade ,您可以将其累积在一个数组中并将其发送到 View 。

关于php - 获取与每一行有关系的大量行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59034965/

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