如何将Eloquent查询结果转换为仅含字符串的一维数组
Laravel Eloquent查询结果转为一维字符串数组的解决方法
你当前拿到的是二维数组的原因是,get()方法返回的是包含Rank模型实例的集合,每个实例对应一行查询结果,调用toArray()后就会转为嵌套的二维结构。要得到仅包含title值的一维数组,有以下几种实现方式:
- 方法1:查询阶段直接获取(最优方案)
直接用pluck方法替换get(),一步拿到指定字段的一维集合,再转数组即可:
// 直接返回 ['User', 'Premium'] 格式的数组 $result = Rank::where('strength', '<', $this->rank->strength)->pluck('title')->toArray();
pluck方法会直接提取查询结果中title字段的所有值,组成一维集合,调用toArray()后就得到目标格式的纯字符串数组。
- 方法2:对已获取的集合做二次处理
如果你已经通过get()拿到了完整的结果集合,可以调用集合的pluck方法提取字段:
// 原查询语句 $rankCollection = Rank::where('strength', '<', $this->rank->strength)->select('title')->get(); // 提取title字段组成一维数组 $result = $rankCollection->pluck('title')->toArray();
- 方法3:使用原生PHP处理二维数组
如果已经得到了转换后的二维数组,可以直接用PHP原生的array_column方法提取:
$twoDimensionalArr = Rank::where('strength', '<', $this->rank->strength)->select('title')->get()->toArray(); $result = array_column($twoDimensionalArr, 'title');
内容的提问来源于stack exchange,提问作者Kylian
相关产品推荐
相关产品推荐

