微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel Yajra 数据表排序列,包含 3 组值

如何解决Laravel Yajra 数据表排序列,包含 3 组值

我已为所有评论成功实施了 yajra 数据表。一篇评论可以有 3 种状态:ApprovedPendingBlocked

我在数据表上有一列名为 Status,我想按状态对列进行排序。认情况下,状态按照 ApprovedDeclined 而不是 Pending

有什么办法可以让我通过路由这 3 个状态来对这个列进行排序?

我确定我的问题有一些 editColumnfilterColumn 方法,但我没有在任何地方找到它。

为了@andrewjames 的乐趣,我在这里添加了一些不必要的代码

public function indexDataService()
{

    $reviews = DB::table('reviews')
                        ->join('users','reviews.user_id','=','users.id')
                        ->join('statuses','reviews.status_id','statuses.id')
                        ->join('products','reviews.product_id','products.id')
                        ->join('categories','reviews.category_id','categories.id')
                        ->select([
                            'reviews.*','reviews.created_at AS created_at','statuses.title AS status',DB::raw('CONCAT(users.first_name,"  ",users.last_name) AS full_name'),'products.title',DB::raw('categories.title as category'),])
                        ->where('reviews.deleted_at',NULL);

    return Datatables::of($reviews)
                        ->addColumn('action',function($review){
                            return view('admin/reviews/reviews_actions',compact('review'));
                        })
                        ->editColumn('created_at',function ($review) {
                            $formatedDate = Carbon::createFromFormat('Y-m-d H:i:s',$review->created_at)->format('d-m-Y'); 
                            return $formatedDate;
                        })
                        ->filterColumn('full_name',function ($query,$keyword) {
                            $keywords = trim($keyword);
                            $query->whereRaw("CONCAT(first_name,last_name) like ?",["%{$keywords}%"]);
                        })
                        ->filterColumn('category',$keyword) {
                            $keywords = trim($keyword);
                            $query->whereRaw("categories.title like ?",["%{$keywords}%"]);
                        })
                        ->make(true);
}

在刀片上:

<script>

$('#category-reviews-table tfoot th').each( function () {
    var title = $(this).text();
    $(this).html( '<input type="text" placeholder="'+title+'" />' );
} );

$(function() {
$('#category-reviews-table').DataTable({
    "sDom":"ltipr",processing: false,serverSide: true,"language": {
            "url": "//cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/Italian.json"
        },ajax: '{{ route('admin.reviews.data') }}',columnDefs: [
        {"className": "dt-center","targets": "_all"},{   
        targets: [1],render: function ( data,type,row ) {
            return type === 'display' && data.length > 10 ?
                data.substr( 0,20 ) +'…' :
                data;
            }
        }
    ],columns: [
        { data: 'full_name',name: 'full_name' },{ data: 'title',name: 'products.title' },{ data: 'category',name: 'category'},{ data: 'no_yes',name: 'reviews.no_yes',searchable:false },{ data: 'status',name: 'status',searchable:false,render: function( data,full,Meta ) {
                if (data === 'In attessa') {
                  return "<span class=\"badge badge-warning\">In attessa</span>";
                } else if (data === 'Approvata') {
                  return "<span class=\"badge badge-success\">Approvata</span>";
                } else if (data === 'Rifiutata') {
                return "<span class=\"badge badge-danger\">Rifiutata</span>";
                }
            }
        },{ data: 'created_at',name: 'reviews.created_at',searchable:false  },{ data: 'action',name: 'action',orderable: false,searchable:false }
    ],initComplete: function () {
        this.api().columns().every( function () {
            var that = this;

            $( 'input',this.footer() ).on( 'keyup change clear',function () {
                if ( that.search() !== this.value ) {
                    that
                        .search( this.value )
                        .draw();
                }
            } );
        } );
    },});
});

谁能给我一些如何实现它的例子?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。