强制全局搜索数据表以搜索未列在列选项中的列

时间:2015-12-05 07:32:56

标签: jquery laravel datatables

这是我的Datatables jQuery代码:

$('#allUsersTable').DataTable({
                        processing: true,
                        serverSide: true,
                        "bSort": false,
                        "responsive": true,
                        ajax: {
                            url :   '{!! route('usersData') !!}',
                            data: function(d){
                                d.level =   $('#levelFilter').val()
                            }
                        },
                        columns: [
                            {data: 'checkbox', name: 'checkbox', "width": "20px"},
                            {data: 'userPic', name: 'userPic', 'className': 'text-center'},
                            {data: 'email', name: 'email'},
                            {data: 'created_at', name: 'created_at'},
                            {data: 'level', name: 'level', 'className': 'text-center'},
                            {data: 'actions', name: 'actions', 'className': 'text-center'}
                        ]
                    });  

如您所见,我有一个电子邮件列来显示电子邮件(以及姓名和家庭用户详细信息)。

这是通过yajra-laravel-datatables获取列的后端代码(省略了一些不必要的部分):

$users = User::select(['user_id', 'name', 'family', 'email', 'created_at', 'level']);

        $datatable = app('datatables')->of($users)
            ->orderBy('created_at', 'desc')

            ->editColumn('email', function ($user) {
                return '
                        ' . $user->name . ' ' . $user->family . '
                        <div class="en-text"><a href="mailto:' . $user->email . '" target="_blank">' . $user->email . '</a></div>
                    ';
            })

            });

        return $datatable->make(true);

我们知道,通过数据表搜索框进行全局搜索只会搜索选项中列出的列。

但是我希望当用户在全局搜索框中输入一些字符时,强制数据表搜索未包含在选项中的名称和系列列,并且仅通过电子邮件<在后端代码中使用/ strong>专栏。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

根据https://laracasts.com的yajra答案,解决方案很简单。

我应该在My columns定义中添加隐藏列namefamily,如下所示:

columns: [
    {data: 'checkbox', name: 'checkbox', "width": "20px"},
    {data: 'userPic', name: 'userPic', 'className': 'text-center'},
    {data: 'email', name: 'email'},
    {data: 'created_at', name: 'created_at'},
    {data: 'level', name: 'level', 'className': 'text-center'},
    {data: 'actions', name: 'actions', 'className': 'text-center'},
    {data: 'name', name: 'name', visible: false},
    {data: 'family', name: 'family', visible: false}
]

这很好用。