/** * Run the database seeds. * * @return void */ public function run() { $faker = Factory::create('fr_FR'); $subjectsCount = Subject::all()->count(); for ($qcms = 0; $qcms < 100; $qcms++) { $qcm = Qcm::create(['user_id' => 1, 'subject_id' => rand(1, $subjectsCount - 1), 'name' => $faker->sentence(6), 'description' => $faker->sentence(40)]); for ($questions = 0; $questions < rand(5, 10); $questions++) { $question = Question::create(['qcm_id' => $qcm->id, 'question' => $faker->sentence(20)]); for ($answers = 0; $answers < rand(2, 4); $answers++) { Answer::create(['question_id' => $question->id, 'answer' => $faker->sentence(10), 'isValid' => $answers == 0]); } } } }
public function postCreate(Request $request) { $this->validate($request, ['name' => 'required|string', 'description' => 'required|string', 'subject_id' => 'required|in:' . implode(',', array_keys(Subject::toList())), 'questions' => 'required|array', 'valids_answers' => 'required|array|size_array:questions|answer_exists:answers', 'answers' => 'required|array']); $qcm = DB::transaction(function () use($request) { $datas = $request->all(); // Création du QCM wow!!§ $qcm = Qcm::create(['user_id' => Auth::id(), 'subject_id' => $datas['subject_id'], 'name' => $datas['name'], 'description' => $datas['description']]); foreach ($datas['questions'] as $q => $question) { // Création des questions associées au QCM !!§ $question = Question::create(['qcm_id' => $qcm->id, 'question' => $question]); foreach ($datas['answers'][$q] as $a => $answer) { // Création des réponses associées aux questions !§§ $answer = Answer::create(['question_id' => $question->id, 'answer' => $answer, 'isValid' => (int) $datas['valids_answers'][$q] === $a]); } } return $qcm; }); if ($qcm != null) { Session::push('messages', 'success|Votre QCM a bien été créé'); return redirect()->route('qcm::mine'); } else { Session::push('messages', "danger|Le QCM n'a pas été créé"); return redirect(URL::previous()); } }