Как ограничить вопросы в php? - PullRequest
0 голосов
/ 15 января 2020

Я использую флаттер и php, и мне нужно получить только 40 случайных вопросов из базы данных, но я новичок в php! Как я могу это сделать? См код ниже

public function index(){

$user = Auth::user();
$topics = Topic::all()->toArray();
$questions = Question::all()->toArray();

    return response()->json(array('users' =>$user,'topics'=>$topics,'questions'=>$questions), 200);

// return response()->json(['data' => $posts], 200, [], JSON_NUMERIC_CHECK);
}

public function show_question($id){
    $topic = Topic::findOrFail($id);
    $user_id = Auth::user()->id;
    $existing = Answer::where('user_id',$user_id)->where('topic_id',$id)->first();
    if($existing == ""){
        $topic_ques = Question::where('topic_id', $id)->get()->shuffle(); 
        $questions = $topic_ques->only(40);
        return response()->json(array('topic'=>$topic,'questions' => $questions), 200);
    }
    else{
      return response()->json("test already given", 300);  
    }
}

Ответы [ 3 ]

1 голос
/ 15 января 2020
public function index(){

$user = Auth::user();
$topics = Topic::all()->toArray();
$questions = Question::all()->random(40)->toArray();

    return response()->json(array('users' =>$user,'topics'=>$topics,'questions'=>$questions), 200);

// return response()->json(['data' => $posts], 200, [], JSON_NUMERIC_CHECK);
}

public function show_question($id){
    $topic = Topic::findOrFail($id);
    $user_id = Auth::user()->id;
    $existing = Answer::where('user_id',$user_id)->where('topic_id',$id)->first();
    if($existing == ""){
        $topic_ques = Question::where('topic_id', $id)->get()->shuffle(); 
        $questions = $topic_ques->only(40);
        return response()->json(array('topic'=>$topic,'questions' => $questions), 200);
    }
    else{
      return response()->json("test already given", 300);  
    }
}
1 голос
/ 15 января 2020

Попробуйте:

$questions = Question::where('topic_id', $id)->inRandomOrder()->take(40)->get();

См. Laravel документы для получения дополнительной информации.

0 голосов
/ 15 января 2020
 $topic_ques = Question::where('topic_id', $id)->limit(40)->get()->shuffle(); 

Просто используйте функцию предела.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...