【问题标题】:Laravel raw sql to eloquentLaravel 原始 sql 到 雄辩
【发布时间】:2021-01-12 08:54:19
【问题描述】:

我有一个类似这样的查询

select sum(end_time-start_time) as total,userid,firstname,lastname from users.fd_page_logs 
LEFT JOIN users.fd_users ON fd_page_logs.userid=fd_users.id 
WHERE fd_users.username!=''".$search." 
AND DATE_FORMAT(datetime,'%Y-%m-%d')='".date("Y-m-d")."' 
group by userid 
order by sum(end_time-start_time) DESC 
limit 0,10

我正在尝试将其转换为雄辩的。这就是我目前所得到的

FdPageLogs::select("end_time", "start_time", "userid", "firstname", "lastname")
    ->leftJoin('fd_users', 'fd_page_logs.userid', '=', 'fd_users.id')
    ->where('fd_users.username', '!=', '')
    ->groupBy('fd_page_logs.filename')
    ->get();

我还错过了什么。

【问题讨论】:

  • 你可以使用 DB 行方法与 eloquent FdPageLogs::select(DB::raw('select sum(end_time-start_time) as total,userid,firstname,lastname from users.fd_page_logs LEFT JOIN users.fd_users ON fd_page_logs.userid=fd_users.id WHERE fd_users.username!=''".$search." AND DATE_FORMAT(datetime,'%Y-%m-%d')='".date("Y-m-d")."' group by userid order by sum(end_time-start_time) DESC limit 0,10))->get();

标签: laravel eloquent laravel-8


【解决方案1】:

您错过了一些原始条件和第一个表:

FdPageLogs::table('fd_page_logs') // Needs this and the DB::raw below
    ->select(DB::raw('sum(end_time-start_time) as total'),"end_time", "start_time", "userid", "firstname", "lastname")
    ->leftJoin('fd_users', 'fd_page_logs.userid', '=', 'fd_users.id')
    ->where('fd_users.username', '!=', $search) //Also missed this
    ->whereDate('datetime', Carbon::today()) // I prefer this syntax rather than date format
    ->groupBy('fd_page_logs.filename')
    ->orderBy('total', 'DESC') //I think this should work
    ->get();

【讨论】:

    猜你喜欢
    • 2018-01-31
    • 2016-09-14
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 2021-07-03
    • 2017-01-28
    相关资源
    最近更新 更多