sql查询到子查询的laravel查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql查询到子查询的laravel查询相关的知识,希望对你有一定的参考价值。

请帮助如何使这个sql正确,不能使用两个选择和RAND

SELECT * FROM (SELECT * FROM `galleries` 
               WHERE domain_id = 13 AND is_deleted = 0 
               ORDER BY galleries.id DESC LIMIT 30) q 
ORDER BY RAND()

喜欢这个

$galleries = DB::table('galleries')->select( DB::raw('galleries.*') )
            ->where( 'domain_id', 13 )
            ->where( 'is_deleted', 0 ) ...
答案

您可以将查询重写为

SELECT * FROM `galleries`
WHERE domain_id = 13 
AND is_deleted = 0 
ORDER BY id DESC,RAND()
LIMIT 30

在laravel的东西

$galleries = DB::table('galleries')
            ->select( DB::raw('galleries.*') )
            ->where( 'domain_id', 13 )
            ->where( 'is_deleted', 0 )
            ->orderBy('id', 'desc')
            ->orderByRaw('RAND()')

或者从上面的查询中获得结果,而不使用->orderByRaw('RAND()')并执行shuffle()

$galleries = $galleries->toArray(); 
shuffle($galleries);

以上是关于sql查询到子查询的laravel查询的主要内容,如果未能解决你的问题,请参考以下文章

将原始 SQL 转换为 Laravel 查询构建器

Laravel 8 - MS SQL - 查询生成器 - 使用 DB Raw。尝试使代码正确,使其像工作的 MSSQL 代码一样工作

在 Laravel 5 Eloquent 中获取原始 SQL 查询的结果

从原始 SQL 到 Laravel Eloquent 或查询构建器

sql [SQL查询片段]用于在命令行或通过R和其他工具使用SQL的快速代码段#tags:sql,R,text processing,命令li

将原始 SQL 查询传递给 Laravel 上的查询构建器