【问题标题】:Eloquent: Order by sum of two columnsEloquent:按两列之和排序
【发布时间】:2020-07-25 09:28:41
【问题描述】:

我的工作 SQL 查询如下:

SELECT post_id
FROM news_tags  
ORDER BY  (link_clicks+views) DESC

到目前为止,我在 eloquent 中尝试过的是这样的:

$newsTagSaved = NewsTag::
                orderBy(DB::raw("`views` + `link_clicks`"), 'desc')
                ->paginate(12)
                ->pluck('post_id');

Newstag 表有很多列和视图,link_clicks 是其中的两个。现在,我正在尝试通过视图总和和 link_click 的 desc 检索 post_id 顺序。

我如何在 Laravel eloquent 中做到这一点?

谢谢!

【问题讨论】:

    标签: laravel eloquent


    【解决方案1】:

    做这样的事情:

    $newsTagSaved = NewsTag::select(DB::raw('views + link_clicks as score'))
        ->orderBy('score', 'desc')
        ->get();
    dd($newsTagSaved);
    

    这将只返回 score 值。如果您想返回其他字段,只需将它们添加到select。举个例子:

    $newsTagSaved = NewsTag::select(
        DB::raw('views + link_clicks as score'),
        'title',
        'created_at'
    )
        ->orderBy('score', 'desc')
        ->get();
    dd($newsTagSaved);
    

    【讨论】:

      猜你喜欢
      • 2011-10-30
      • 1970-01-01
      • 2016-06-21
      • 1970-01-01
      • 2014-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      相关资源
      最近更新 更多