雄辩的列列表按键与数组作为值?
所以我可以用Eloquent做到这一点:
$roles = DB::table('roles')->lists('title', 'name');
但是有没有办法让 Eloquent 为每个不同的键获取一个值数组,而不仅仅是一列呢?
例如,类似于以下内容:
$roles = DB::table('roles')->lists(['*', DB:raw('COALESCE(value, default_value)')], 'name');
所以我可以用Eloquent做到这一点:
$roles = DB::table('roles')->lists('title', 'name');
但是有没有办法让 Eloquent 为每个不同的键获取一个值数组,而不仅仅是一列呢?
例如,类似于以下内容:
$roles = DB::table('roles')->lists(['*', DB:raw('COALESCE(value, default_value)')], 'name');
您可以使用 keyBy
方法:
$roles = Role::all()->keyBy('name');
如果您没有使用 Eloquent,则可以自行创建一个集合:
$roles = collect(DB::table('roles')->get())->keyBy('name');
如果您使用的是 Laravel 5.3+,则查询生成器现在实际上返回一个集合,因此无需再次手动将其包装在集合中:
$roles = DB::table('roles')->get()->keyBy('name');
如果需要数组,因为可以使用 .这样,您可以指示要用作 和 .key/value
Laravel 5.1
pluck
value
key
$plucked = MyModel::all()->pluck(
'MyNameAttribute',
'MyIDAttribute'
);
return $plucked->all();
您将获得一个数组,如下所示:
array:3 [▼
1 => "My MyNameAttribute value"
2 => "Lalalala"
3 => "Oh!"
]