Crea un modelo y un controlador
Crea un modelo llamado Movie para representar datos de la colección de muestra movies en su base de datos MongoDB y el controlador de recursos correspondiente ejecutando el siguiente comando:
php artisan make:model Movie -cr
Cuando el comando se completa, muestra el siguiente mensaje:
INFO Model [app/Models/Movie.php] created successfully. INFO Controller [app/Http/Controllers/MovieController.php] created successfully.
Edita el modelo para usar la integración de Laravel
Abra el modelo Movie.php en su directorio app/Models y realice las siguientes modificaciones:
Reemplace la importación de
Illuminate\Database\Eloquent\ModelporMongoDB\Laravel\Eloquent\ModelEspecifica
"mongodb"en el campo$connection
El archivo Movie.php editado contiene el siguiente código:
namespace App\Models; use MongoDB\Laravel\Eloquent\Model; class Movie extends Model { protected $connection = 'mongodb'; }
Agregar una función de controlador
Abra el archivo MovieController.php en su directorio app/Http/Controllers. Reemplace la función show() con el siguiente código para recuperar los resultados que coinciden con una consulta de base de datos y representarlos en la vista:
public function show() { return view('browse_movies', [ 'movies' => Movie::where('runtime', '<', 60) ->where('imdb.rating', '>', 8.5) ->orderBy('imdb.rating', 'desc') ->take(10) ->get() ]); }
Generar una vista
Ejecute el siguiente comando desde el directorio raíz de la aplicación para crear una vista que muestre datos de películas:
php artisan make:view browse_movies
Después de ejecutar el comando, se muestra el siguiente mensaje:
INFO View [resources/views/browse_movies.blade.php] created successfully.
Abra el archivo de vista browse_movies.blade.php en el directorio resources/views. Remplaza el contenido por el siguiente código y guarda los cambios:
<!DOCTYPE html> <html> <head> <title>Browse Movies</title> </head> <body> <h2>Movies</h2> @forelse ($movies as $movie) <p> Title: {{ $movie->title }}<br> Year: {{ $movie->year }}<br> Runtime: {{ $movie->runtime }}<br> IMDB Rating: {{ $movie->imdb['rating'] }}<br> IMDB Votes: {{ $movie->imdb['votes'] }}<br> Plot: {{ $movie->plot }}<br> </p> @empty <p>No results</p> @endforelse </body> </html>
Opcionalmente, vea sus resultados como documentos JSON
En lugar de generar una vista y editar el archivo browse_movies.blade.php, puedes usar el método toJson() para mostrar tus resultados en formato JSON.
Reemplaza la función show() con el siguiente código para recuperar los resultados y devolverlos como documentos JSON:
public function show() { $results = Movie::where('runtime', '<', 60) ->where('imdb.rating', '>', 8.5) ->orderBy('imdb.rating', 'desc') ->take(10) ->get(); return $results->toJson(); }
Empiece su aplicación Laravel
Ejecutá el siguiente comando desde el directorio raíz de la aplicación para iniciar tu servidor web integrado de PHP:
php artisan serve
Una vez que el servidor se inicia, emite el siguiente mensaje:
INFO Server running on [http://127.0.0.1:8000]. Press Ctrl+C to stop the server
Ver los datos de películas
Abre la URL http://127.0.0.1:8000/browse_movies en tu navegador web. La página muestra una lista de películas y detalles sobre cada una de ellas.
Tip
Puedes ejecutar el comando php artisan route:list desde el directorio raíz de tu aplicación para ver una lista de las rutas disponibles.
Nota
Si enfrenta problemas en este paso, envíe feedback utilizando el Rate this page pestaña en el lado derecho o inferior derecho de esta página.
Puede encontrar soporte para preguntas generales mediante la etiqueta Stack Overflow de MongoDB o la comunidad de Reddit de MongoDB.