Any ideas?
Load previously used questions
Basically I have 3 tables: Survey, Questions, and Answers. I'm trying to decipher a way to create survey templates that can be re-used. Basically, user would go in, create a new survey name and description, and have the option to select 1 of 3 question templates, template 1, template 2, or create your own survey from scratch.
For instance, I'd like to be able to create a new survey using the same questions used in survey->id(89) etc.
The issue is, I have no idea where to even start with this process. I'm new to Laravel and looking for some guidance. Please forgive me if this is something in the docs I've missed.
Survey Controller
<?php
public function __construct() //MAKING SURE THE USER IS LOGGED IN TO CREATE SURVEYS, UPDATE, AND DELETE SURVEYS
{
$this->middleware('auth', ['except' => ['view_survey', 'home', 'thanks']]);
}
public function home(Request $request, Survey $survey)
{
$surveys = Survey::get();
return view('survey.home', compact('surveys'));
}
public function thanks(Request $request, Survey $survey)
{
return view('survey.thanks', compact('surveys'));
}
public function all(Request $request, Survey $survey)
{
$surveys = Survey::get();
return view('survey.all', compact('surveys'));
}
public function new_survey()
{
return view('survey.new');
}
public function create(Request $request, Survey $survey)
{
$arr = $request->all();
$arr['user_id'] = Auth::id();
$surveyItem = $survey->create($arr);
return Redirect::to("/survey/{$surveyItem->id}");
}
public function detail_survey(Survey $survey)
{
$survey->load('questions.user');
return view('survey.detail', compact('survey'));
}
public function edit(Survey $survey)
{
return view('survey.edit', compact('survey'));
}
public function update(Request $request, Survey $survey)
{
$survey->update($request->only(['title', 'description']));
return redirect()->action('SurveyController@detail_survey', [$survey->id]);
}
public function view_survey(Survey $survey)
{
$survey->option_name = unserialize($survey->option_name);
return view('survey.view', compact('survey'));
}
# view submitted answers from current logged in user
public function view_survey_answers(Survey $survey, Charts $chart, Answer $answer, Question $question)
{
$survey = $survey->load('user.questions.answers');
$id = $survey->id;
$chart = Charts::database($answer->where('question_id', '=', $survey->questions->pluck('id'))->get(), 'bar', 'material')
->title("")
->colors(['#F5A623', '#A9D8D3'])
->elementLabel("Answers")
->dimensions(0, 250)
->groupBy('answer');
return view('answer.view', compact('survey', 'chart', 'answer', 'question' ));
}
public function delete_survey(Survey $survey)
{
$survey->delete();
$surveys = Survey::get();
return view('survey.all', compact('surveys'));
}
}
Survey Model
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Survey extends Model
{
protected $fillable = ['title', 'description', 'user_id'];
protected $dates = ['deleted_at'];
protected $table = 'surveys';
public function questions(){
return $this->hasMany(Question::class);
}
public function user(){
return $this->belongsTo(User::class);
}
public function answers(){
return $this->hasMany(Answer::class);
}
}
Please or to participate in this conversation.