0

我需要将以下 SQL 转换为 eloquent

select * from medias order by likes/views DESC, views ASC

我需要对结果使用分页,这就是我更喜欢雄辩的原因。

我的其他一些 SQL 查询是

$media_list = Media::order_by('likes', 'desc')->paginate($per_page);

我试过了

$media_list = Media::order_by('likes/views', 'desc')->paginate($per_page);

但它给出了错误

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

有人知道怎么修这个东西吗 ?

4

1 回答 1

1

尝试,代替/

$media_list = Media::order_by('likes,views', 'desc')->paginate($per_page);

或者

$media_list = Media::order_by('likes`,`views', 'desc')->paginate($per_page);

这也是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();
于 2013-08-04T04:21:57.483 回答