Laravel检索关联数组的方法是什么,其中,键是查询的第一列,值是第二列。
User::select('id','type')->unknown();
应该返回:
[
2=>'s',
30=>'t',
32=>'x',
]
答案 0 :(得分:2)
应该是:
User::lists( 'type', 'id' )->all();
答案 1 :(得分:1)
我不认为该方法存在,但您可以做的是在返回的关联数组上使用array_column
来获得您想要的内容:
$array = User::select( 'type', 'id' )->all();//get array of assoc arrays
$result = array_column($array, 'type', 'id');//column
这将使用id
的每个子数组中的$array
键(即每个结果/关联数组)作为键返回一个数组,并将type
值作为值返回。所以如果$array
看起来像这样:
$array = [
[
'id' => 1,
'type' => 'a',
],
[
'id' => 2,
'type' => 'b',
],
];
array_column
来电的结果如下:
$result = [
1 => 'a',
2 => 'b',
];
注意 array_column
需要PHP 5.5或更高版本,如果您运行的是5.4,并且无法升级,请编写自己的函数,它是很容易:
function myArrayCol(array $in, $valKey, $idxKey = null)
{
$result = [];
foreach ($in as $sub) {
if (!is_array($sub)) {
throw new RuntimeException('myArrayCol requires a multi-dimensional array to be passed');
}
$value = isset($sub[$valKey]) ? $sub[$valKey] : null;
if ($idxKey === null || !isset($sub[$idxKey])) P
$result[] = $value;
} else {
$result[$sub[$idxKey]] = $value;
}
}
return $result;
}
请注意,此实现完全未经测试,但您可以获得基本的想法......
很明显,laravel确实有一种方法可以完成OP想要的操作,正如@Mat建议的那样,the docs显示:
$result = User::lists('type', 'id')->all();
返回OP在单行中的结果。