Редактировать:
Я пытаюсь сделать что-то простое. На мои встречи.Индекс просмотра у меня есть форма. После отправки формы я хочу использовать значения в моем запросе, например, так:
AppointmentsController:
public function index(Request $request)
{
$statusId = $request->status;
$labelId = $request->label;
$monthId = $request->month;
$appointments = Appointment::status($statusId)->label($labelId)->month($monthId)->get();
return view('appointments', compact('appointments'));
}
Один из методов в моей модели (все они похожи):
public function scopeStatus($query, $statusId)
{
if($statusId)
{
return $query->where('status_id', '=', $statusId);
}
else {
return false;
}
}
Каков наилучший способ сделать это, если не для решения ниже?
OP:
Я получаю следующую ошибку:
Метод App \ Http \ Controllers \ AppointmentsController :: store () не существует
Я знаю, что это из-за моих маршрутов:
Route::get('appointments', array('as' => 'appointments', 'uses' => 'AppointmentsController@index'));
Route::post('appointments', array('uses' => 'AppointmentsController@index'));
Route::resource('appointments', 'AppointmentsController');
Если я изменю маршрут сообщения следующим образом, он будет работать:
Route::post('appointments/anythinghere', array('uses' => 'AppointmentsController@index'));
Вопрос в том, почему это (из-за маршрута ресурса, я понимаю, но почему) и как я могу «исправить» его, чтобы я все еще мог использовать свои маршруты, как указано выше?
Маршрут ресурса создает действие магазина в вашем контроллере. Вы можете указать подмножество действий для регресса.
В вашем случае попробуйте это
Route::resource('appointments', 'AppointmentsController',
['except' => ['store']]);
Других решений пока нет …