php - OrderBy 在应用 GroupBy Laravel 时不起作用

标签 php mysql laravel group-by sql-order-by

我正在使用以下查询来检索用户提要,但是当我们应用 order created_at time by desc 时,订购最新更新不起作用

这里我给出了 SQL 查询。请建议我解决我的问题的解决方案

    select `users`.`id` as `uid`, `updates`.`post_id`, `updates`.`id` as `upid`, `friends`.`id` as `fid`, `updates`.`user_id`, `updates`.`privacy`, `updates`.`updated_at`, `updates`.`created_at`, `friends`.`first_user_id`, `friends`.`second_user_id`, `friends`.`friend_status`, `updates`.`update_type` from `updates` 
inner join `users` on `updates`.`user_id` = `users`.`id`
inner join `friends` on 
    CASE
        WHEN friends.first_user_id = 1
        THEN friends.second_user_id = updates.user_id
        WHEN friends.second_user_id= 1
        THEN friends.first_user_id = updates.user_id
    END
where `friends`.`friend_status` > 0 
    and `updates`.`privacy` in (1,2) 
    and `updates`.`user_id` != 1 and 
    `updates`.`deleted_at` is null 
group by `updates`.`post_id` 
order by `updates`.`created_at` desc

Laravel 代码

Update::select(
        'users.id as uid', 'posts.id as pid', 'updates.post_id', 'updates.id as upid',
        'friends.id as fid', 'updates.user_id', 'updates.privacy', 'updates.updated_at', 'updates.created_at', 'posts.deleted_at', 'friends.first_user_id', 
        'friends.second_user_id', 'friends.friend_status', 'updates.update_type', 'posts.wall_user_id'
        )->join('users', 'updates.user_id', '=', 'users.id')
        ->join('posts', 'posts.id', '=', 'updates.post_id')
        ->join('friends', function($join) use ($userId){
            $join->on(DB::raw('CASE
                        WHEN friends.first_user_id = '.$userId.'
                        THEN friends.second_user_id = updates.user_id
                        WHEN friends.second_user_id= '.$userId.'
                        THEN friends.first_user_id = updates.user_id
                        END'
                    ), DB::raw(''), DB::raw(''));
        })->where('friends.friend_status', '>', 0)
        ->whereIn('updates.privacy', [1,2])
        ->where('updates.user_id', '!=', Auth::user()->id)
        ->groupBy('updates.post_id')
        ->orderBy('updates.created_at', 'DESC')
        ->get();

最佳答案

select * from(select `users`.`id` as `uid`, `updates`.`post_id`, `updates`.`id` as `upid`, `friends`.`id` as `fid`, `updates`.`user_id`, `updates`.`privacy`, `updates`.`updated_at`, `updates`.`created_at`, `friends`.`first_user_id`, `friends`.`second_user_id`, `friends`.`friend_status`, `updates`.`update_type` from `updates` 
inner join `users` on `updates`.`user_id` = `users`.`id`
inner join `friends` on 
    CASE
        WHEN friends.first_user_id = 1
        THEN friends.second_user_id = updates.user_id
        WHEN friends.second_user_id= 1
        THEN friends.first_user_id = updates.user_id
    END
where `friends`.`friend_status` > 0 
    and `updates`.`privacy` in (1,2) 
    and `updates`.`user_id` != 1 and 
    `updates`.`deleted_at` is null order by `updates`.`created_at` desc) as tmp_table 
group by `updates`.`post_id` 

关于php - OrderBy 在应用 GroupBy Laravel 时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39487728/

相关文章:

php - 如何以正确的 JSON 格式获取 FCM 通知响应?

php - Heroku 的 Windows 工具带和 LD_LIBRARY_PATH

php - 正则表达式匹配变量或字符串的值(带或不带引号)

php - Mysql - 日期范围内的用户分析

php - 无法在自定义 Laravel 测试环境中进行身份验证(codeception)

使用 Gitlab CI 错误的 Laravel Dusk 测试,无法连接到端口 :9515: Connection refused

php - 在 AJAX 和 PHP 的另一个选项卡中提交表单并显示文本框值

php - mysqli_fetch_assoc() 不返回任何东西

php - CakePHP 3 中的联接查询无法检测到第一列的 ID。我该如何解决这个问题?

php - 在文件夹内创建图像会导致创建名称为 folder/image.jpg 的图像