Actualmente estoy trabajando en una aplicación de Laravel y me gustaría tener esta sección donde se muestren los libros mejor calificados. Guardé mis calificaciones en el modelo de calificación. Mi idea era así a continuación, pero, de hecho, no funcionó. Sería muy, muy feliz si alguien me respondiera correctamente.
$book = Book::all(); $ratings = Rating::where('book_id', '=', $book->id)->orderBy(avg('rating')); return view('toprated')->withRatings($ratings);toprated.blade.php
@foreach($ratings as $rating) {{ $rating }} @endforeachPuedes actualizar tu código como:
$ratings = Articles::where('state', '=', '1') ->select(array('ratings.*', DB::raw('AVG(rating) as ratings_average') )) ->orderBy('ratings_average', 'DESC') ->get();Si necesita usar una función MYSQL, use orderByRaw :
$ratings = Rating::where('book_id', '=', $book->id)->orderByRaw("avg(rating)");