Php 在Laravel DB select函数中从MySql获取特定列值

Php 在Laravel DB select函数中从MySql获取特定列值,php,laravel,laravel-5,laravel-5.3,Php,Laravel,Laravel 5,Laravel 5.3,如何在Laravel DB select函数中从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

如何在Laravel DB select函数中从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"
  }
]
我只需要pincode值,而不是键值对。所以我试着用下面的代码

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"
]
但我建议使用Laravel Elotent,因为您无论如何都在使用Laravel,所以最好使用内置功能来简化过程


但是我建议使用Laravel Elount,因为您无论如何都在使用Laravel,所以最好使用内置功能来简化过程。

我认为查询应该是这样的

 $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\u id=$area\u id->toArray()你能测试一下并告诉我新的状态吗。

我想查询应该是这样的

 $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\u id=$area\u id->toArray()
您可以测试它并告诉我新的状态吗。

最好的方法是使用Query Builder或Eloquent并使用它,而不是使用
get()


最好的方法是使用Query Builder或Eloquent,并使用它而不是
get()

使用您的变体:

\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.
我建议您使用第二种变体,因为这是获得所需结果的更清晰的方法。

使用您的变体:

\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.

我建议您使用第二种变体,因为这是获得所需结果的更清晰的方法。

对单个值使用Pull,对单个值使用Pullvalues@Sharath检查您是否正在编写核心PHP PDO查询为什么要使用Laravel?现在我使用Laravel函数而不是PDOquery@Sharath如果你觉得我的回答有帮助,您应该已经投票了。@Sharath检查您是否正在编写核心PHP PDO查询为什么要使用Laravel?现在我使用Laravel函数而不是PDOquery@Sharath如果你觉得我的答案有帮助,你应该投票表决。