laravel yajratable - 隐藏列但使其可搜索

Posted

技术标签:

【中文标题】laravel yajratable - 隐藏列但使其可搜索【英文标题】:laravel yajratable - hide column but make it searchable 【发布时间】:2022-01-06 03:14:59 【问题描述】:

我有以下代码:

视图表:

<div class="d-flex justify-content-center" style="padding:0px; margin-left: -58px">
    <table id="all" class="table table-bordered yajra-datatable">
        <thead>
        <tr>

            <th>First Name</th>
            <th>Last Name</th>
            <th>Team</th>
            <th>Email</th>
            <th>CC</th>
            <th>Skills</th>
            <th>Team</th>
            <th>Action</th>
        </tr>
        </thead>
        <tbody>
        </tbody>
    </table>
</div>

控制器

            public function getEmployees_all()
        

           $data = DB::table('employees')->select('first_name', 'last_name','email','name_abb_mappings.cc','name_abb_mappings.team', 'skills', 'file')
               ->leftJoin('name_abb_mappings','employees.abbreviation','=','name_abb_mappings.id')
               ->get();

            $data11 = Datatables::of($data)
                ->addIndexColumn()
                ->addColumn('download', function ($data) 
                    return ' <form action="'.route('download').'" method="post" enctype="multipart/form-data"> '.@csrf_field().'  <button type="submit" class="btn btn-outline-secondary" style="color:orangered" name="downloadProfile" value= "'.$data->file.'">
                <svg xmlns="http://www.w3.org/2000/svg"   fill="currentColor" class="bi bi-file-pdf" viewBox="0 0 16 16">
                <path d="M4 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H4zm0 1h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z"></path>
                <path d="M4.603 12.087a.81.81 0 0 1-.438-.42c-.195-.388-.13-.776.08-1.102.198-.307.526-.568.897-.787a7.68 7.68 0 0 1 1.482-.645 19.701 19.701 0 0 0 1.062-2.227 7.269 7.269 0 0 1-.43-1.295c-.086-.4-.119-.796-.046-1.136.075-.354.274-.672.65-.823.192-.077.4-.12.602-.077a.7.7 0 0 1 .477.365c.088.164.12.356.127.538.007.187-.012.395-.047.614-.084.51-.27 1.134-.52 1.794a10.954 10.954 0 0 0 .98 1.686 5.753 5.753 0 0 1 1.334.05c.364.065.734.195.96.465.12.144.193.32.2.518.007.192-.047.382-.138.563a1.04 1.04 0 0 1-.354.416.856.856 0 0 1-.51.138c-.331-.014-.654-.196-.933-.417a5.716 5.716 0 0 1-.911-.95 11.642 11.642 0 0 0-1.997.406 11.311 11.311 0 0 1-1.021 1.51c-.29.35-.608.655-.926.787a.793.793 0 0 1-.58.029zm1.379-1.901c-.166.076-.32.156-.459.238-.328.194-.541.383-.647.547-.094.145-.096.25-.04.361.01.022.02.036.026.044a.27.27 0 0 0 .035-.012c.137-.056.355-.235.635-.572a8.18 8.18 0 0 0 .45-.606zm1.64-1.33a12.647 12.647 0 0 1 1.01-.193 11.666 11.666 0 0 1-.51-.858 20.741 20.741 0 0 1-.5 1.05zm2.446.45c.15.162.296.3.435.41.24.19.407.253.498.256a.107.107 0 0 0 .07-.015.307.307 0 0 0 .094-.125.436.436 0 0 0 .059-.2.095.095 0 0 0-.026-.063c-.052-.062-.2-.152-.518-.209a3.881 3.881 0 0 0-.612-.053zM8.078 5.8a6.7 6.7 0 0 0 .2-.828c.031-.188.043-.343.038-.465a.613.613 0 0 0-.032-.198.517.517 0 0 0-.145.04c-.087.035-.158.106-.196.283-.04.192-.03.469.046.822.024.111.054.227.09.346z"></path>
                </svg>
              </button>
              </form>';

                )

                ->rawColumns(['download'])
                ->make(true);

            return $data11;

路线

   Route::GET('employee/all', [EmployeeController::class, 'getEmployees_all'])->name('employees.all');

jQuery

$(function () 
   var table = $('#all').DataTable(
        order: [[1, "desc"]],
        processing: true,
        serverSide: true,
         ajax: "route('employees.all') ",
        columns: [

            data: 'first_name', name: 'first_name',
            data: 'last_name', name: 'last_name',
            data: 'team', name: 'team',
            data: 'email', name: 'email',
            data: 'cc', name: 'cc',
            data: 'skills', name: 'skills',
            data: 'team', name: 'team',

            
                data: 'download',
                name: 'download',
                orderable: true,
                searchable: true
            ,


        ]
    );
);

到目前为止,该表正在工作。

我的问题:

我需要将“技能”列隐藏但可在数据表搜索框中搜索。 如果我只是用 display:none 之类的 CSS 隐藏列,那么表格会在以下方面被破坏 列以某种方式向左移动,并且条目位于错误的列中。 但是它不是那样工作的。有没有其他方法可以做到这一点。我希望我能正确地解释它。

提前致谢。

【问题讨论】:

【参考方案1】:

不是特别复杂:

data: 'skills', name: 'skills', searchable : true, visible: false,

将隐藏该列但使其可搜索。

【讨论】:

以上是关于laravel yajratable - 隐藏列但使其可搜索的主要内容,如果未能解决你的问题,请参考以下文章

Jquery数据表隐藏列但访问其值

仅从 Laravel 5.2 关系查询中选择特定列不起作用 [重复]

Hibernate Identity 列但不是主键

原则 ORDER BY 列但 DISTINCT 在另一列

基于其他列但有条件创建列

选择条件列但获取子查询返回超过 1 个值