У меня есть проект базы данных, как в следующеммодель отношений и передачи объектов
Poll
id | name
--------------
1 | Poll One
PollQuestion
id | poll_id | question
-------------------------
1 | 1 | Something
PollAnswer
id | question_id | answer
-------------------------------
1 | 1 | Answer 1
-------------------------------
2 | 1 | Answer 2
-------------------------------
3 | 1 | Answer 3
A Опрос может иметь один PollQuestion и PollQuestion может иметь много PollAnswer х.
Все это прекрасно работает, я могу создавать Опросы, вопросы и ответы. Все это делается в бэкэнд, который требует входа в систему как пользователь admin.
На внешнем интерфейсе мне нужно отобразить вопрос опроса и возможные ответы. Я создал модель PollResponse, к которой в опросе может быть много PollResponse. Модели выглядеть примерно так
class Poll extends Model
{
public function pollQuestion()
{
return $this->hasOne('App\PollQuestion', 'poll_id');
}
public function pollResponse()
{
return $this->hasMany('App\PollResponse', 'poll_id');
}
}
class PollResponse extends Model
{
public function poll()
{
return $this->belongsTo('App\Poll');
}
}
Я тогда мои маршруты созданы, как это следующая
Route::group(['middleware' => ['web']], function() {
Route::model('polls.response', 'PollResponse');
Route::resource('/', 'PollResponseController', ['except' => ['create', 'show', 'edit', 'update', 'destroy']]);
Route::group(['middleware' => ['admin_logged', 'can_see']], function()
{
Route::model('polls', 'Poll');
Route::bind('polls', function($value, $route) {
return App\Poll::whereId($value)->first();
});
Route::resource('admin/polls', 'PollController');
Route::model('polls.questions', 'PollQuestion');
Route::resource('polls.questions', 'PollQuestionController', ['except' => ['index', 'create', 'show', 'edit', 'destroy']]);
});
});
Таким образом, идея есть, обычный пользователь может посетить главный домен и увидеть последний опрос вопрос с его возможные ответы. Затем они выбирают ответ и отправляют ответ. Вид на это выглядит следующим образом:
<div class="panel-heading">
<h3 class="panel-title"> {{ $question->question }}</h3>
</div>
<div class="panel-body">
{!! Form::model(new App\PollResponse, ['route' => ['store', $poll->id]]) !!}
@if (count($answers) !== 0)
@foreach($answers as $key => $value)
<div class="radio">
<label>
<input type="radio" name="optionsRadios" value="{{ $value->answer }}"> {{ $value->answer }}
</label>
</div>
@endforeach
@endif
{!! Form::submit('Save', array("class"=>"btn btn-info pull-right ")) !!}
{!! Form::close() !!}
</div>
Так что все это прекрасно работает. У меня проблема с функцией магазина, хотя в моем PollResponseController. Если я отправлю ответ, poll_id добавляется к URL-адресу, определенному в маршруте. Но в функции магазина, я сейчас делаю
public function store(Request $request, Poll $poll)
{
dd($poll);
}
Я бы ожидать, что это выходной ток опроса объекта, но в настоящее время выводит пустой Poll объект. Как я могу получить связанный опрос Объект в эту функцию, чтобы я мог связать ответы с конкретным опросом?
Благодаря