Obtener registros aleatorios de la base de datos
Publicado por Álvaro (22 intervenciones) el 18/03/2020 14:23:15
Buenos días / tardes / noches. Continuo realizando el proyecto con Laravel, siendo bastante fructífero. Estoy llevando a cabo un apartado de sugerencias de libros, pero como mi página web carece de sistema de calificaciones, se tratarán de de registros escogidos de manera aleatoria de la base de datos. Y el problema viene ahí, ya que tengo en un campo de la tabla 'books'. Aquí dejo el modelo entidad - relación para poder ver mejor la estructura de la base de datos:

Y aquí visualizo que lo almacenado en la base de datos es la ruta de las portadas. A continuación explicaré para que las uso:

Las rutas son almacenadas en la base de datos, y las imágenes de las mismas en la carpeta storage/covers, un directorio creado para guardar las portadas de los libros, ahorrando cargar de manera innecesaria la base de datos con imágenes, por muy livianas que sean.
Como decía, lo que pretendo hacer es seleccionar de manera aleatoria esas rutas para visualizarlas en HTML, y la selección funciona, pero el problema viene a la hora de mostrarse:

Se me muestra la URL de la imagen, cosa que no debería hacer. A continuación dejo el código de la consulta y la que debería ser la visualización de las portadas:
Lo que hago es seleccionar un ISBN aleatorio ejecutando la función rand, estableciendo como el mínimo 1, y el máximo alguna de los ISBN que encuentre en la base de datos, evitando así sobrepasar el ISBN más grande.
Agradecería cualquier ayuda o consejo. Muchas gracias

Y aquí visualizo que lo almacenado en la base de datos es la ruta de las portadas. A continuación explicaré para que las uso:

Las rutas son almacenadas en la base de datos, y las imágenes de las mismas en la carpeta storage/covers, un directorio creado para guardar las portadas de los libros, ahorrando cargar de manera innecesaria la base de datos con imágenes, por muy livianas que sean.
Como decía, lo que pretendo hacer es seleccionar de manera aleatoria esas rutas para visualizarlas en HTML, y la selección funciona, pero el problema viene a la hora de mostrarse:

Se me muestra la URL de la imagen, cosa que no debería hacer. A continuación dejo el código de la consulta y la que debería ser la visualización de las portadas:
1
2
3
4
5
6
7
<div class="col-sm-6">
{{ asset("storage/covers/" . \App\Book::where("ISBN" , rand(1, \App\Book::value("ISBN")))->value("coverPage")) }}
</div>
<div class="col-sm-6">
{{ asset("storage/covers/" . \App\Book::where("ISBN" , rand(1, \App\Book::value("ISBN")))->value("coverPage")) }}
</div>
Lo que hago es seleccionar un ISBN aleatorio ejecutando la función rand, estableciendo como el mínimo 1, y el máximo alguna de los ISBN que encuentre en la base de datos, evitando así sobrepasar el ISBN más grande.
Agradecería cualquier ayuda o consejo. Muchas gracias
Valora esta pregunta


0