#
El método store()
Es la página que guarda un registro en la base de datos. Si fue creado con resource la URL sería:
Esta URL requiere un envío de datos por método POST para funcionar.
#
En el controlador...
En este ejemplo el store() registrará una anécdota en la tabla anécdotas.
Este ejemplo NO VALIDA los datos de la inserción. En otro ejemplo se utilizará la validación.
public function store(Request $request)
{
//
$anecdota= new Anecdota;
$anecdota->titulo=$request->titulo;
$anecdota->anecdota=$request->historia;
$anecdota->user_id=Auth()->user()->id;
$anecdota->save();
return redirect('/anecdotas')->with('exito', 'Tu anécdota fue guardada celosamente!');
}
El método recibe el objeto request con los datos enviados por el método POST del formulario create. Se crea un objeto basado en el modelo de la tabla anécdotas (línea 4) y se adjuntan a los campos editables del modelo los datos recibidos en el request. No tienen que llamarse igual (línea 6). En la línea 7 se usa un dato que no viene del formulario ya que es el ID del usuario que está haciendo la inserción y ese dato lo tenemos desde su logueo. Finalmente se aplica el método save() para aplicar la inserción.
La tabla en la base de datos debe tener los campos created_at y updated_at del tipo timestamp para que funcione esta inserción.
#
En el modelo...
La acción que usa el modelo está en la línea 4 con la acción new Anecdota.
#
En la vista...
Esta inserción comunmente no genera una página pues solo diría algo como "registro exitoso". Lo común entonces es que se redireccione a una vista existente que confirme la inserción. Un lugar común sería volver al index o al create si queremos ver el resultado o seguir registrando información adjuntando información para dar mensajes de éxito. Todo depende del diseño.
return redirect('/anecdotas')->with('exito', 'Tu anécdota fue guardada celosamente!');
El método with() adjunta un data flash que es un dato que solo vive en la siguiente página que se carga. Se utiliza para mandar mensajes de éxito y error comúnmente. Lleva un nombre y un mensaje.
Este mensaje en la redirección aún no se ve en la vista del index. En otro ejemplo se adjuntará.
#
En la ruta...
No se indica nada más que la ruta al resource una sola vez:
Route::resource('anecdotas', AnecdotaController::class);
#
Resultado
El resultado final en la base de datos: