【问题标题】:Laravel - get DB result without table column nameLaravel - 获取没有表列名的数据库结果
【发布时间】:2017-03-23 13:54:34
【问题描述】:

我希望在 Laravel 4.2 中只包含不包含表列名的值的结果。例如,

$recs = DB::table('table_name')
        ->select('id', 'title')
        ->get();

结果是

array(2) {
  [0]=>
  object(stdClass)#863 (2) {
    ["id"]=>
    int(2)
    ["title"]=>
    string(8) "my title"
  }
  [1]=>
  object(stdClass)#862 (2) {
    ["id"]=>
    int(3)
    ["title"]=>
    string(10) "my title 2"
  }
}

但我只想得到结果而不是列名,比如

[
  2,
  "my title"
],
[
  3,
  "my title 2"
]

是的,我可以通过循环结果并制作没有列名的新数组来实现。但是有什么方法可以使用 Laravel 以这种方式获得结果吗?

【问题讨论】:

    标签: laravel laravel-4.2


    【解决方案1】:

    试试

    $recs = DB::table('table_name')->pluck('id', 'title');
    dd($recs->all());
    

    【讨论】:

    • 抱歉,您需要附加all()。再次检查我的代码。
    • 'pluck' 返回一个数字,因此将 'all()' 放入一个数字时会显示错误
    【解决方案2】:

    您可以使用map()array_values() 方法:

    $recs->map(function($i) {
        return array_values((array)$i);
    })
    

    我不确定 Laravel 4.2,但我刚刚对其进行了测试,它在 Laravel 5.3 中完美运行。如果在 4.2 中不起作用,请改用原生的 array_map() 函数。

    【讨论】:

    • 这是我所知道的唯一(几乎)正确答案。您只需要执行return array_values($i->toArray()); 即可使用array_values。话虽如此,我对此用例非常感兴趣(将人类可读的键转换为索引)。
    • @devk 我也测试过,因为 OP 在这里使用查询生成器,toArray() 将返回错误。至少在 5.3 中(虽然不确定 4.2)。我编辑了我的代码以将对象转换为数组。我先复制了错误的代码。感谢您提及。
    【解决方案3】:

    Reference

    试试$recs->flatten()->all()

    更新

    由于您的 $recs 看起来像您的错误中的数组。尝试转换为collection。我希望这将适用于 v4.2

    $recsCollection = new \Illuminate\Database\Eloquent\Collection($recs);
    $recsCollection->flatten()->all();
    

    【讨论】:

    • 感谢您的回复...由于我使用 Laravel 4.2 并且给定的参考在 5.4 中,我遇到了错误
    • 收到错误“调用数组上的成员函数 flatten()”
    • "Call to undefined function collect()" 我认为 4.2 不支持 'collect'
    • 更新了答案。 collect 辅助功能在 v4.2 中不可用
    【解决方案4】:

    DB::table('table_name')->all()->lists('id', 'title')->toArray()

    Referance: Retrieving A List Of Column Values

    【讨论】:

      猜你喜欢
      • 2020-03-17
      • 1970-01-01
      • 2013-05-06
      • 1970-01-01
      • 2023-04-04
      • 2019-04-25
      • 2019-04-28
      • 1970-01-01
      • 2021-08-31
      相关资源
      最近更新 更多