【问题标题】:Get specific column value from MySql in Laravel DB select function从 Laravel DB 选择函数中的 MySql 获取特定列值
【发布时间】:2017-05-17 11:57:50
【问题描述】:

如何在 Laravel DB 选择函数中从 MySql 获取结果后获取特定列值

下面是我的php代码。

$list = DB::select('SELECT DISTINCT a.pincode FROM table_name nvs 
        JOIN areas a on nvs.area_id = a.id 
        where nvs.city_id = ?;', [$area_id]);

以下是上述查询的结果。

[
  {
    "pincode": "560005"
  },
  {
    "pincode": "560006"
  }
]

我只需要密码值而不是键值对。所以我尝试了下面的代码。

return array_column($list->toArray(), 'pincode');

调用数组上的成员函数 toArray()

如何在不使用 foreach 循环的情况下仅获取值。

回答

我使用了下面的代码

$pincode_list = DB::table('table_name as nvs')
            ->join('areas as a', 'nvs.area_id', '=', 'a.id')
            ->select('a.pincode')
            ->where('nvs.city_id', '=', $area_id)
            ->distinct('a.pincode')->pluck('pincode')->toArray();

结果是:

[
    "560067",
    "560035"
]

【问题讨论】:

  • 对单个值使用 pluck

标签: php laravel laravel-5 laravel-5.3


【解决方案1】:

最好的方法是使用 Query Builder 或 Eloquent 并使用它来代替 get():

->pluck('pincode')->toArray();

【讨论】:

    【解决方案2】:

    我认为查询应该是这样的

     $area_ids = DB::table('table_name')
            ->join('areas', 'nvs.area_id', '=', 'table_name.id')
            ->select('table_name.pincode')
            ->where('nvs.city_id', '=', $area_id)
            ->distinct()->get();
    

    如果你将它作为对象并希望它是数组,你可以在这里使用toArray(),比如$area_ids = $area_ids->toArray();,你能测试一下并告诉我新的状态吗?

    【讨论】:

    • @Sharath check laravel.com/docs/5.3/queries#joins 如果你正在编写核心 PHP PDO 查询为什么你使用 Laravel?
    • 现在我使用 laravel 函数而不是 PDO 查询
    • @Sharath 如果您觉得我的回答有帮助,您应该点赞。
    【解决方案3】:
    $all_pincodes = array_values ($list);
    

    但我建议您使用 Laravel Eloquent,就像您使用 Laravel 一样,因此最好使用内置功能来简化流程。

    【讨论】:

      【解决方案4】:

      使用您的变体:

      \DB::setFetchMode(\PDO::FETCH_ASSOC);
      $data = \DB::select($yourQuery);
      $pincodes = array_pluck($data, 'pincode')
      \DB::setFetchMode(config('database.fetch')); //return fetch to default
      

      使用更流畅的方式:

        $pincodes = \DB::table('table')->pluck('pincode')->toArray(); //do not forget about wheres and joins in this query.
      

      我会向您推荐第二种变体,因为这是获得所需结果的更清晰的方法。

      【讨论】:

        猜你喜欢
        • 2011-12-10
        • 2015-08-06
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 2019-03-22
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        相关资源
        最近更新 更多