Crear 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 se completa el comando, se 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
Illuminate\Database\Eloquent\ModelconMongoDB\Laravel\Eloquent\ModelEspecifique
"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, aparece 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. Reemplace el contenido con el siguiente código y guarde 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, puede utilizar el método toJson() para mostrar los resultados en formato JSON.
Reemplace la función show() con el siguiente código para recuperar 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(); }
Ver los datos de la película
Abrir 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.
Tip
Puede ejecutar el comando php artisan route:list desde el directorio raíz de su aplicación para ver una lista de rutas disponibles.
Nota
Si tiene problemas en este paso, envíe sus comentarios mediante 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.