Quiero crear una aplicación web de transmisión de video. Quiero hacer un seguimiento de los videos vistos por los usuarios. Cuando se inicia el video, se agregará a la tabla de la base de datos llamada "relojes". Tengo 3 mesas para esta operación. Tabla de personas:
->person_id ->name ->email ->passwordtabla de contenidos:
->content_id ->title ->content_typeTabla de relojes:
->watch_id ->person_id(foreign key) ->content_id(foreign key)Cuando se active el botón de reproducción, se agregará a la base de datos. ¿Cómo puedo hacer eso?
Lo que puede hacer es escuchar el evento de click en el botón Reproducir. Puede lograrlo con JavaScript o algún marco de JavaScript como jQuery (si ya lo está usando en su proyecto). Te mostraré la forma jQuery ya que es más moderna.
En primer lugar, debe crear una nueva ruta que utilizará la técnica de enlace de modelo de ruta.
use App\Models\ContentModel; use App\Models\WatchModel; use Illuminate\Http\Request; Route::post('increment/{content:content_id}/watches', function(Request $request, ContentModel $content) { if($request->ajax()) { if(WatchModel::where('person_id', '=', auth()->user()->id) ->where('content_id', '=', $content->content_id) ->doesntExists()) { $insert = WatchModel::insert([ 'person_id' => auth()->user()->id, 'content_id' => $content->content_id ]); if($insert) { return response()->json('Successfully incremented the watches!', 200); } } } })->whereNumber('content'); Luego, adjunta un detector de eventos de click al botón y realiza una solicitud AJAX a la ruta que acabamos de crear.
$("#playButton").on('click', function() { $.ajax({ 'url' : 'https://yoursite.com/increment/{{ $content->content_id }}/watches', 'type' : 'POST', 'data' : { 'user_id' : {{ auth()->user()->id }} } }); });¡Y eso es! Puede actualizar el código con algo de lógica según sus necesidades. Personalmente, crearía alguna lógica para verificar el primer clic del botón y evitar enviar una solicitud AJAX al servidor en cada clic, pero eso depende de usted.