【问题标题】:How to trim a string in a yajra datatable used a raw query in laravel如何修剪 yajra 数据表中的字符串在 laravel 中使用原始查询
【发布时间】:2019-12-06 15:11:19
【问题描述】:

我在如何从使用原始查询从数据库中获取数据的查询中修剪数据表中的字符串时遇到问题。

我的查询示例是

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();
    }

来自我的数据表的控制器

public function dataDataTable()
    {
        $data = $this->query->data(); //query of data

        return DataTables::of($data)
            ->addIndexColumn()
            ->make(true);
    } 

我在 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

如何修剪 data1 字符串,以便在我的数据表视图中看到几个字符?

【问题讨论】:

  • 您能否添加一个当前字符串的示例以及您想要的结果。
  • 我当前的字符串包含 100 多个字符,因为是用户输入提供的描述,并且信息假设显示在数据表视图上,数据库中的商店描述大约 50 个字符

标签: laravel laravel-5 datatable eloquent yajra-datatable


【解决方案1】:

您可以使用 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 版本,因此您的响应不会变得臃肿。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-04
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 2021-09-28
    相关资源
    最近更新 更多