Php 在Laravel DB select函数中从MySql获取特定列值
如何在Laravel DB select函数中从MySql获取结果后获得特定的列值 下面是我的php代码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
$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如果你觉得我的答案有帮助,你应该投票表决。