在 laravel 5.1 中限制急切加载
constraining eager loads in laravel 5.1
我需要知道如何使这个约束起作用。
$senderscore = Server::with(['scores' => function($query){
$query->orderBy('ts', 'desc')->take(1);
}])->get();
当我使用 take(1) 时,它会给我一个空的分数数组。我只需要最新(最新)的分数。因为我无法完成这项工作,所以我在没有 take(1) 的情况下使用它,当我在 blade 中循环遍历服务器时,我只使用数组中的第一个 child。这工作正常我只是不喜欢我现在正在加载和传递 8100 个结果而不是 9 个(每个服务器 1 个)
仅使用 take(1) 它只会给我 1 个分数,但它不会排在最新的第一位。我不明白为什么我不能链接它?
评分和服务器是一对多的关系。一个分数属于一个服务器。一台服务器有很多分数
好吧,我的项目快完成了,所以我决定再看看这个,几乎立刻就发现了问题。
上面的代码确实有效,只是不像我预期的那样有效。你绝对可以链接。
我预计每台服务器会有 1 分。但是整个查询只需要1分(当然是DOH)
为了按照我想要的方式工作,我设置了服务器数量限制。
$senderscore = Server::with(['scores' => function($query){
$query->orderBy('ts', 'desc')->take(Server::count());
}])->get();
有 9 个服务器,所以我们只得到 9 个结果,每个服务器 1 个
我需要知道如何使这个约束起作用。
$senderscore = Server::with(['scores' => function($query){
$query->orderBy('ts', 'desc')->take(1);
}])->get();
当我使用 take(1) 时,它会给我一个空的分数数组。我只需要最新(最新)的分数。因为我无法完成这项工作,所以我在没有 take(1) 的情况下使用它,当我在 blade 中循环遍历服务器时,我只使用数组中的第一个 child。这工作正常我只是不喜欢我现在正在加载和传递 8100 个结果而不是 9 个(每个服务器 1 个)
仅使用 take(1) 它只会给我 1 个分数,但它不会排在最新的第一位。我不明白为什么我不能链接它?
评分和服务器是一对多的关系。一个分数属于一个服务器。一台服务器有很多分数
好吧,我的项目快完成了,所以我决定再看看这个,几乎立刻就发现了问题。 上面的代码确实有效,只是不像我预期的那样有效。你绝对可以链接。
我预计每台服务器会有 1 分。但是整个查询只需要1分(当然是DOH)
为了按照我想要的方式工作,我设置了服务器数量限制。
$senderscore = Server::with(['scores' => function($query){
$query->orderBy('ts', 'desc')->take(Server::count());
}])->get();
有 9 个服务器,所以我们只得到 9 个结果,每个服务器 1 个