使用 DataTables 在 Laravel 中按雄辩的关系排序

我正在尝试使用DataTables来显示应用程序模型的列表。应用模型有操作:


public function operations(){

    return $this->hasMany('\App\Operation', 'application_id', 'id');

}

运营模型有状态:


public function state(){

    return $this->belongsTo('App\State', 'status_id', 'id');

}

和操作作者(用户):


public function user(){

    return $this->hasOne('App\User', 'id', 'user_id');

}

要启用数据表,我正在使用此代码:


                        $(function() {

                        $('#applications-table').DataTable({

                            language: {

                                "url": "/js/Polish.json"

                            },

                            processing: true,

                            serverSide: true,

                            ajax: '{!! route('applications.data') !!}',                           

                            ]

                        });


                    });

ApplicationController 正在使用此代码提供数据


        $model = Application::with(array(

        'operations' => function ($query) {

            $query->orderByDesc('operations.created_at')->with('state')->with('user');

        }

    ));


    return Datatables::of($model)->make(true);

最后一个问题 - 表格正在正确呈现,但是当我尝试按第一列之外的另一列排序时,我收到警告:


DataTables 警告:表 id=applications-table - 请求第 0 行的未知参数“operations.0.correspondence”。


老实说,我不知道如何使它工作。先感谢您。


繁星淼淼
浏览 168回答 1
1回答

小唯快跑啊

通过使用DB::table修复    $applications = DB::table('applications as a')    ->join('operations as o', function($join){        $join->on('o.application_id', '=', 'a.id')            ->on('o.id', '=', DB::raw("(SELECT max(id) from operations WHERE operations.application_id = a.id)"));    })    ->join('users as u', 'o.user_id', '=', 'u.id')    ->join('states as s', 'o.status_id', '=', 's.id')    ->select(['a.id as a_id','a.number','o.*', 'u.name as u_name', 'u.surname as u_surname', 's.name as s_name']);return Datatables::of($applications)->make(true);
打开App,查看更多内容
随时随地看视频慕课网APP