我发现我的收藏是错误的键,所以我开始调试代码。这样做我注意到,如果我将数组中超过2500个项目传递给集合,它会丢失密钥,否则,如果我传递少于2501个项目则保持正常
限制为2500件
public function getProdutos($codigoconcentrador, $codigoempresa, $pluck)
{
$model_produtos = new Produto();
$query = $model_produtos->newQuery();
$query->where('codigoconcentrador', $codigoconcentrador)
->where('codigoempresa', $codigoempresa)
->where('status', 'A');
$query->limit(2500);
dd($query->pluck('nomeproduto', 'codigopro'));
if ($pluck) {
return $query->pluck('nomeproduto', 'codigopro');
} else {
return $query->get();
}
}
结果
Collection {#260 ▼
#items: array:2500 [▼
1 => "CIMENTO VOTORAN CP II Z 32 - 50 KG"
7 => "SOPA 250G - LEGUMES"
8 => "SOPA 250G - CARNE"
9 => "CIMENTO CIPLAN CP II Z 32 - 50 KG"
10 => "ARGAMASSA VOTORAN ACI"
11 => "ARGAMASSA VOTORAN ACII"
13 => "ARGAMASSA COLA BEM ACI "
14 => "ARGAMASSA COLA BEM ACII "
...
...
没有限制
public function getProdutos($codigoconcentrador, $codigoempresa, $pluck)
{
$model_produtos = new Produto();
$query = $model_produtos->newQuery();
$query->where('codigoconcentrador', $codigoconcentrador)
->where('codigoempresa', $codigoempresa)
->where('status', 'A');
// $query->limit(2500);
dd($query->pluck('nomeproduto', 'codigopro'));
if ($pluck) {
return $query->pluck('nomeproduto', 'codigopro');
} else {
return $query->get();
}
}
结果
Collection {#3809 ▼
#items: array:2875 [▼
0 => "CIMENTO VOTORAN CP II Z 32 - 50 KG"
1 => "SOPA 250G - LEGUMES"
2 => "SOPA 250G - CARNE"
3 => "CIMENTO CIPLAN CP II Z 32 - 50 KG"
4 => "ARGAMASSA VOTORAN ACI"
5 => "ARGAMASSA VOTORAN ACII"
6 => "ARGAMASSA COLA BEM ACI "
7 => "ARGAMASSA COLA BEM ACII "
8 => "REATOR 2 X 40 BIVOLT"
9 => "CHA VERDE SOLUVEL - LIMAO 200G - UND"
10 => "ROLDANA P/ POCO GANCHO 12CM. R.C.A."
...
...
更新
该函数正在接收第二个参数$query->pluck('nomeproduto', 'codigopro')
,所以我调试了pluck函数,就在它成为集合时它丢失了密钥
供应商/ laravel /框架/ SRC /照亮/支持/ Collection.php
public function pluck($value, $key = null)
{
dd(Arr::pluck($this->items, $value, $key)); // First Result
dd(new static(Arr::pluck($this->items, $value, $key))); // Second Result
// return new static(Arr::pluck($this->items, $value, $key));
}
答案 0 :(得分:1)
plug
方法搜索具有该名称的列并将其用作每个元素的新键...如果您只想获取每个元素的两列,则可以使用$collection->only('aa', 'bb')
。除此之外,由于很多原因,你应该使用分页... 2500多个元素的数组是疯狂的。
答案 1 :(得分:0)
当您将密钥作为第二个参数传递时,您将获得第一个结果:
function check() {
document.getElementById("testout").innerHTML = "Verified";
document.getElementById("checkbit").innerHTML = "1";
}
function store() {
if (checkbit.innerHTML == "1") {
//some code
}
}
当你没有通过它时,你得到了第二个:
pluck('nomeproduto', 'codigopro')
所以,请仔细检查代码。