Reputation: 1
I need following SQL converted to eloquent
select * from medias order by likes/views DESC, views ASC
I need to use paginate on the result, that is why i prefer eloquent.
Some of my other SQL queries are
$media_list = Media::order_by('likes', 'desc')->paginate($per_page);
I tried
$media_list = Media::order_by('likes/views', 'desc')->paginate($per_page);
But it gives error
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'likes/views' in 'order clause'
SQL: SELECT * FROM `medias` ORDER BY `likes/views` DESC LIMIT 20 OFFSET 0
Anyone know how to fix this ?
Upvotes: 0
Views: 2142
Reputation: 64466
Try ,
instead of /
$media_list = Media::order_by('likes,views', 'desc')->paginate($per_page);
or
$media_list = Media::order_by('likes`,`views', 'desc')->paginate($per_page);
And also this is the standard way of doing in laravel
$media_list = Media::order_by('likes', 'desc')->orderBy('views', 'desc')->paginate($per_page);
$media_list = DB::table('medias')
->select(DB::raw('(likes/views) AS resultant'))
->order_by('resultant', 'desc')->orderBy('views', 'desc')
->get();
Upvotes: 1