空结果集yajra数据表在大表上

时间:2016-11-26 11:01:27

标签: jquery laravel datatables

我有一个Question模型大约 30,000 这样的记录:

class Question extends Model
    {
        use SoftDeletes;

        protected $primaryKey = 'question_id';

        protected $fillable   = ['text', 'code', 'cat', 'answer', 'confirmed', 'is_private', 'email', 'parent', 'expert'];

        public function sub_questions ()
        {
            return $this->hasMany(Question::class, 'parent', 'question_id');
        }

        public function latest_sub_question ()
        {
            return $this->hasOne(Question::class, 'parent', 'question_id')->latest();
        }


    }

显示我正在使用的所有问题的列表yajra datatable laravel package。

这是我的js代码:

var allQuestionsTable =
$('#allQuestionsTable').DataTable({
                        processing: true,
                        serverSide: true,
                        "bSort": false,
                        "responsive": true,
                        ajax: {
                            url: '{!! route('admin.questionsDatatable') !!}'
                        },
                        columns: [
                            {data: 'checkbox'},
                            {data: 'code', name: 'code'},
                            {data: 'text', name: 'text'},
                            {data: 'created_at'},
                            {data: 'answer', name: 'answer'},
                            {data: 'expert'},
                            {data: 'confirmed'},
                            {data: 'actions'}
                        ]
                    });

在后端我写了这个函数:

public function questionsDatatable (Request $request)
        {
            $questions = Question::with('latest_sub_question')->whereNull('parent');

            $datatable = app('datatables')->of($questions)
                ->addColumn('checkbox', '<input type="checkbox" name="item_id[]" value="{{$question_id}}" id="Check_{{$question_id}}">');

                //other column modifications comes here

            return $datatable->make(true);
        }

首先,当我的表有几行时,一切正常,但是当我添加大量新记录时,questionsDatatable返回空值并导致数据表返回警报错误。

什么是问题?是否有可用于解决此问题的参数?

更新:

我将questionsDatatable方法更改为以下并使用了简单的查询构建器,但它无法返回所有记录并返回空集:

public function questionsDatatable (Request $request)
{

            $questions = DB::table('questions')->select(['question_id'])->get();

            return $questions->get();
}

1 个答案:

答案 0 :(得分:0)

如果您的查询返回正确的结果,则此dataTable应正常工作。首先,您需要检查您的代码行:

$questions = DB::table('questions')->select(['question_id'])->get();

一旦此行返回正确的结果,请浏览dataTable example

希望这些信息能为您提供帮助。