Eloquent column list by key with array as values?

You can use the keyBy method:

$roles = Role::all()->keyBy('name');

If you’re not using Eloquent, you can create a collection on your own:

$roles = collect(DB::table('roles')->get())->keyBy('name');

If you’re using Laravel 5.3+, the query builder now actually returns a collection, so there’s no need to manually wrap it in a collection again:

$roles = DB::table('roles')->get()->keyBy('name');

Leave a Comment