Мне нужно сделать опрос для моего веб-сайта. У меня есть это
Маршрут:
Route::resource('survey','surveyController');
контроллер
public function index()
{
$show=survey_title::find(1);
return view('survey',compact('show'));
}
// здесь мы только что прочитали первый опрос
миграции:
Schema::create('survey_titles', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->timestamps();
});
Schema::create('survey_questions', function (Blueprint $table) {
$table->increments('id');
$table->integer('survey_title_id')->unsigned()->index();
//$table->integer('user_id')->unsigned()->index();
$table->foreign('survey_title_id')->references('id')->on('survey_titles')->onDelete('cascade')->onUpdate('cascade');
// $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade');
$table->string('answer');
$table->integer('voted')->nullable();
$table->timestamps();
});
модели:
survey_question:
public function survey_titles(){
return $this->hasOne('App\survey_title');
}
public function users(){
return $this->hasOne('App\User');
}
survey_title:
public function survey_questions(){
return $this->hasMany('App\survey_question');
}
пользователь:
public function survey_questions(){
return $this->hasOne('App\survey_question');
}
Посмотреть :
<div class="col-md-8 col-md-offset-2">
<table class="table table-hover table-bordered table-striped">
<thead>
<tr>
<th>Voted by 0 People </th>
<th>{{$show->title}}</th>
<th>Question ID: {{$show->id}}</th>
</tr>
<tr>
<th>Check</th>
<th>Answer</th>
<th>ID</th>
</tr>
</thead>
<tbody>
@foreach($show->survey_questions as $ans)
<tr>
<td><input type="radio" name="check[]"></td>
<td>{{$ans['answer']}}</td>
<td>{{$ans['id']}}:</td>
</tr>
@endforeach
</tbody>
</table>
<a class="btn btn-primary" href="{{action('surveyController@update',$ans->id)}}">Vote</a>
</div>
Хорошо, теперь я помещаю данные вручную в базу данных и получаю.
Я хочу, чтобы при нажатии на кнопку «Голосовать» отправлялся мой идентификатор ответа, но вместо этого всегда отправлял последний идентификатор из таблицы !!!! ???
в чем дело?
и если у кого-то есть лучший код для опроса, пожалуйста, дайте мне знать
спасибо заранее и извините за мой плохой язык. англ это не мой язык
Изменить: проблема выше решена
Теперь мне нужно сохранить этот идентификатор в таблице
вот мой код
кнопка:
<a name="vote{{$ans->id}}" href="{{action('surveyController@store')}}" class="btn btn-primary">Vote</a>
контроллер
public function store(Request $request,$id)
{
$name=$request->input('vote'.$id);
DB::table('survey_questions')->insert([
'voted'=>$id
]);
return redirect('survey');
}
этот код ничего не сохраняет, но если я использую dd () в функции шоу, то это правильно
Это происходит потому, что:
<a class="btn btn-primary" href="{{action('surveyController@update',$ans->id)}}">Vote</a>
находится вне цикла foreach, поэтому после завершения цикла последний идентификатор устанавливается для ссылки.
Поместите ссылку href в цикл foreach, чтобы он генерировал ссылку для каждого ответа.
<tr>
<th>Voted by 0 People </th>
<th>{{$show->title}}</th>
<th>Question ID: {{$show->id}}</th>
<th>Vote</th>
</tr>
@foreach($show->survey_questions as $ans)
<tr>
<td><input type="radio" name="check[]"></td>
<td>{{$ans['answer']}}</td>
<td>{{$ans['id']}}:</td>
<td><a class="btn btn-primary" href="{{action('surveyController@update',$ans->id)}}">Vote</a></td>
</tr>
@endforeach
Других решений пока нет …