Laravel 5 在Eloquent查询或Yarja数据表中格式化数字
我正在写一个可搜索的表格,其中包括面积和人口。以下是基本查询:Laravel 5 在Eloquent查询或Yarja数据表中格式化数字,laravel-5,eloquent,laravel-datatables,Laravel 5,Eloquent,Laravel Datatables,我正在写一个可搜索的表格,其中包括面积和人口。以下是基本查询: public function getCountryData() { $co = DB::table('countries')->leftJoin('country_detail','country_detail.country_id','=','countries.id')->addSelect(['countries.id','countries.name','country_detail.capital
public function getCountryData()
{
$co = DB::table('countries')->leftJoin('country_detail','country_detail.country_id','=','countries.id')->addSelect(['countries.id','countries.name','country_detail.capital','country_detail.area','country_detail.iso3','country_detail.population','country_detail.currencyName','country_detail.phone','country_detail.continent'])->get();
return Datatables::of($co)
->addColumn('action', function($co){
$btn = '<div style="float:right">
<a href="'. route('country.edit',$co->id) .' " class="btn btn-outline-secondary btn-xs" title="edit" style="margin-right:.5em">'.getEditIcon().'</a><a href="'. route('country.show', $co->id) .'" class="btn btn-outline-secondary btn-xs" title="images" style="margin-right:.5em">'.getBinoculars().'</a>';
return $btn;
}) ->rawColumns(['action'])
->make(true);
}
公共函数getCountryData()
{
$co=DB::table('countries')->leftJoin('country\u detail'、'country\u detail.country\u id'、'='、'countries.id')->addSelect(['countries.id'、'countries.name'、'country\u detail.capital'、'country\u detail.area'、'country\u detail.iso3'、'country\u detail.population'、'country\u detail.currencyName'、'country\u detail.continum'])->>get();
返回数据表::of($co)
->addColumn('action',函数($co){
$btn=
';
返回$btn;
})->rawColumns(['action'])
->使(真实);
}
在我看来,所有这些都可以很好地工作,除了人口字段,例如,返回类似于29121286的值,当然我想格式化它,使其为29121286
这可以在查询或数据表本身中完成吗?多亏了Laracasts上的Navok,下面是答案 首先,您需要一个javascript函数将字符串转换为一个格式正确的数字
function formatNumber(num) {
return num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')
}
我已经在一个名为misc.js的文件中添加了它(这样我就可以有其他东西了),我从layouts.app调用了它,这样它就可以在系统范围内使用
这可在以下网址找到
然后在页面上的datatables声明中添加
createdRow: function (row, data, dataIndex) {
if (data.population !== undefined) {
// 4 here is the cell number, it starts from 0 where this number should appear
$(row).find('td:eq(4)').html(formatNumber(data.population));
}
},
我希望这是有价值的。我建议使用php的
number\u format
函数格式化数字,而不是使用javascript在客户端格式化数字
return Datatables::editColumn('population', function($item) {
return number_format($item->population);
});
有关格式化数字的更多帮助,请参阅