Laravel 查询生成器结合 pluck() 和 keyBy()

Laravel query builder combine pluck() with keyBy()

我希望 Laravel 查询生成器 return 一个 key => value.

的数组

例如,对于 users table 有列 usernameemail return 类似:

Array
(
    [email1] => username1
    [email2] => username2
)

现在,我可以用 pluck('username')keyBy('email') 实现每一个。

我可以使用 php 数组函数来操作 return 由 keyBy 编辑的结果,以实现我想要的:

$tmpRes = DB::table('users')
    ->select(['username', 'email'])
    ->get()->keyBy('email')->toArray();

$res = array_map(function ($el) {
    return $el->username;
}, $tmpRes);

不知道有没有直接的方法。

Pluck 实际上允许第二个参数作为键

public static function pluck($column, $key = null)

所以你所要做的就是将它传递给

$tmpRes = DB::table('users')
    ->pluck('username', 'email')
    ->toArray();