如何 trim yajra 数据表中的字符串使用 laravel 中的原始查询
How to trim a string in a yajra datatable used a raw query in laravel
我有一个问题,关于如何 trim 我的数据中的字符串 table 来自使用原始查询从数据库获取数据的查询。
我的查询示例是
public function data()
{
return DB::table('query_table')
->select([
DB::raw('query_table.data1 AS data1'),
DB::raw('query_table2.data2 AS data2'),
])
->join('query_table2','query_table2.query_table_id','=','query_table.id')
->where(['query_table.id' => 1])
->orderByDesc('query_table.data1')
->get();
}
来自我的数据的控制器table
public function dataDataTable()
{
$data = $this->query->data(); //query of data
return DataTables::of($data)
->addIndexColumn()
->make(true);
}
我正在使用数据table作为 laravel
中的视图
@extends('layouts.main' , ['title' => trans('label.data.table')])
@include('includes.datatable_assets')
@push('after-styles')
@include('includes.custom_assets')
@endpush
@section('content')
<div class="card">
<div class="card-body">
<header class="card-header card-header-custom">
<h2 class="card-title" style="color: white" >{!! trans('label.table.header') !!}</h2>
</header>
<div class="" id="list-all">
<table class="display" id="templates-table">
<thead>
<tr>
<th>@lang('label.sn')</th>
<th>@lang('label.data1')</th>
<th>@lang('label.data2')</th>
</tr>
</thead>
</table>
</div>
</div>
</div>
@endsection
@push('after-scripts')
<script type="text/javascript">
$('#templates-table').DataTable({
processing: true,
serverSide: true,
ajax: '{!! route('query.datatable.route') !!}',
type: 'get',
columns: [
{data: 'DT_RowIndex', name: 'DT_RowIndex', orderable: false, searchable: false, width: '5%'},
{data: 'data1', name: 'data1', orderable: false, searchable: true, width: '65%'},
{data: 'data2', name: 'data2', orderable: false, searchable: true, width: '35%'},
],
</script>
@endpush
如何 trim data1 字符串,以便在我的数据 table 视图中可以看到很少的字符?
您可以在 PHP 或 Javascript 中完成:
Javascript:
$('#templates-table').DataTable({
...,
columnDefs: [{
targets: 1,
render: function (data, type, row) {
return type === 'display' && data.length > 50 ? data.substr(0, 50) + '…' : data;
}
}]
});
您可以阅读更多相关信息 here。
PHP:
use Illuminate\Support\Str;
public function dataDataTable()
{
$data = $this->query->data(); // query of data
return DataTables::of($data)
->editColumn('data1', function ($data) {
return Str::limit($data->data1, 50);
})
->addIndexColumn()
->make(true);
}
如果您不必向用户显示完整的字符串,我会使用 PHP 版本,这样您的响应就不会变得臃肿。
我有一个问题,关于如何 trim 我的数据中的字符串 table 来自使用原始查询从数据库获取数据的查询。
我的查询示例是
public function data()
{
return DB::table('query_table')
->select([
DB::raw('query_table.data1 AS data1'),
DB::raw('query_table2.data2 AS data2'),
])
->join('query_table2','query_table2.query_table_id','=','query_table.id')
->where(['query_table.id' => 1])
->orderByDesc('query_table.data1')
->get();
}
来自我的数据的控制器table
public function dataDataTable()
{
$data = $this->query->data(); //query of data
return DataTables::of($data)
->addIndexColumn()
->make(true);
}
我正在使用数据table作为 laravel
中的视图@extends('layouts.main' , ['title' => trans('label.data.table')])
@include('includes.datatable_assets')
@push('after-styles')
@include('includes.custom_assets')
@endpush
@section('content')
<div class="card">
<div class="card-body">
<header class="card-header card-header-custom">
<h2 class="card-title" style="color: white" >{!! trans('label.table.header') !!}</h2>
</header>
<div class="" id="list-all">
<table class="display" id="templates-table">
<thead>
<tr>
<th>@lang('label.sn')</th>
<th>@lang('label.data1')</th>
<th>@lang('label.data2')</th>
</tr>
</thead>
</table>
</div>
</div>
</div>
@endsection
@push('after-scripts')
<script type="text/javascript">
$('#templates-table').DataTable({
processing: true,
serverSide: true,
ajax: '{!! route('query.datatable.route') !!}',
type: 'get',
columns: [
{data: 'DT_RowIndex', name: 'DT_RowIndex', orderable: false, searchable: false, width: '5%'},
{data: 'data1', name: 'data1', orderable: false, searchable: true, width: '65%'},
{data: 'data2', name: 'data2', orderable: false, searchable: true, width: '35%'},
],
</script>
@endpush
如何 trim data1 字符串,以便在我的数据 table 视图中可以看到很少的字符?
您可以在 PHP 或 Javascript 中完成:
Javascript:
$('#templates-table').DataTable({
...,
columnDefs: [{
targets: 1,
render: function (data, type, row) {
return type === 'display' && data.length > 50 ? data.substr(0, 50) + '…' : data;
}
}]
});
您可以阅读更多相关信息 here。
PHP:
use Illuminate\Support\Str;
public function dataDataTable()
{
$data = $this->query->data(); // query of data
return DataTables::of($data)
->editColumn('data1', function ($data) {
return Str::limit($data->data1, 50);
})
->addIndexColumn()
->make(true);
}
如果您不必向用户显示完整的字符串,我会使用 PHP 版本,这样您的响应就不会变得臃肿。