Laravel获取随机数的静态数组并在分页中使用它

时间:2017-11-24 17:10:59

标签: php laravel testing random pagination

我正在Laravel 5.5中开发一个应用程序......它是一种测试系统......

我想要实现的是当用户点击RUN TEST时,它会产生一组随机的问题(让我们说5)然后我希望它们一个接一个地提供给用户......我在AJAX中进行了分页,因此可以通过页面提供问题..之后用户将点击将提交表单的提交。

我可以随机获取问题列表

在方法" exec_test"中的TestController中是

  // get random id
  $q_id = Question::select('id')
                  ->where('test_id','=',$test_id)
                  //->where('id','=',114)
                  ->orderByRaw("RAND()")
                  ->take(3)
                  ->get();

这将为该特定测试获得3个随机ID ...

以下代码采用相同的方法

  // get data 
  $data = array (
               'tests' => Test::select('id','code','name',DB::raw('duration_m * 60 as duration_m'),'questions','passing_score')
                              ->where('id','=',$test_id)  
                              ->orderBy('code', 'asc')   
                              ->paginate($this->page_limit),   
      'test_questions' => Question::select('questions.id','questions.question_header','questions.question_detail_local_url')
                              ->join('tests','tests.id','=','questions.test_id')
                              ->where('test_id','=',$test_id)
                              ->whereIn('questions.id',$q_id)
                              //->orderByRaw("RAND()")
                              //->take(4)
                              ->paginate($this->test_question_page_limit),

      'test_answers' => Answer::select('id','answer_text_cleaned')
                              ->whereIn('question_id',$q_id)
                              ->get()                      
  ); 


  // check for ajax requests
  if ($request->ajax()) {  
    return view('/custom/test/run_test_quests', $data)->render();  
  }

  return view('/custom/test/run_test_info',$data);

但我不知道如何将第一个查询静态化,并将其逐个(每页)提供给用户..所以他可以通过所有问题

你有什么建议吗?

1 个答案:

答案 0 :(得分:0)

虽然将第一页分页为1,但也会在网址中指定。

试试这个:

if($request->input('page') ==1)
 {
//code for first page
}else{
//code for random
}

这只是一个建议。对不起,如果我理解错误的问题