时间戳转换器

如何将 sql 转换为查询生成器 laravel

日期:2023-02-16     浏览:208    
【中文标题】如何将 sql 转换为查询生成器 laravel【英文标题】:how to convert sql to query builder laravel 【发布时间】:2021-04-30 07:15:39 【问题描述】:

谁能帮我将此 SQL 转换为查询生成器!

SELECT topwords.*, 
       mw.word AS my_word 
FROM   topwords 
       LEFT JOIN (SELECT DISTINCT words.word 
                  FROM   definition_word 
                         JOIN words 
                           ON words.id = definition_word.word_id 
                  WHERE  definition_word.user_id = $user) AS mw 
              ON topwords.word = mw.word 

我对如何在 leftjoin 中使用子查询有疑问!

我尝试过这样的事情,但它有错误! See error as image

DB::table('topwords')
                    ->leftJoin(DB::raw("SELECT DISTINCT
                    words.word
                    FROM definition_word 
                    JOIN words ON words.id = definition_word.word_id
                    WHERE definition_word.user_id = $user as mw"),"topwords.word", "=", "mw.word" )
                    ->select(
                        "topwords.*",
                        "mw.word AS my_word"
                    )->orderBy('id','desc')->paginate(15);

【问题讨论】:

【参考方案1】:

可以使用Join Sub查询官方文档subquery-joins

$mw = DB::table('words')
        ->select('DISTINCT words.word')
        ->join('definition_word', function($join) use ($user)
        
            $join->on('wordss.id', '=', 'definition_word.word_id')
                 ->where('definition_word.user_id',  $user);
        );
        
$topwords = DB::table('topwords')
        ->joinSub($mw, 'mw',function ($join) 
            $join->on('topwords.word', '=', 'mw.word');
        )
        ->select('topwords.*','mw.word AS my_word')
        ->orderBy('id','desc')
        ->paginate(15);

【讨论】:

您好!当我检查 dd($topwords) topwords 变量时,表格上不会显示一个数组。 prnt.sc/xpgn87 查看 $topwords 变量的图像。如果你能帮助我提前谢谢你! topwards 的 dd 将返回 lengthAwarePaginator 对象,实际数据将在图像中显示为空数组的项目中 但我在表中有 4500 条记录,作为标准 SQL,它正在选择记录。如果你能帮忙,请...提前谢谢你 ok 怎么样 get $mw the dd it dd($mw->get());在使用 join sub 显示第一个查询结果的确切内容之前 您也可以在刀片的 foreach 循环中返回 $topwords 或只返回响应 json 以显示它的项目【参考方案2】:

由于分页和聚合

,您会遇到此错误

尝试使用 LengthAwarePaginator 进行自定义分页

这里是示例:Laracast

所以你需要做这样的事情:

  $query = DB::table('topwords')
                        ->leftJoin(DB::raw("SELECT DISTINCT
                        words.word
                        FROM definition_word 
                        JOIN words ON words.id = definition_word.word_id
                        WHERE definition_word.user_id = $user as mw"),"topwords.word", "=", "mw.word" )
                        ->select(
                            "topwords.*",
                            "mw.word AS my_word"
                        );
    
    
    $paginator = new LengthAwarePaginator($query->get(), $query->count(), $request->input('per_page', 15), $request->input('page', 1));

然后就可以在集合中使用了

【讨论】:

您好!我使用了这段代码,但我有一些错误。如果你可以请帮助我。 -- SQLSTATE[42000]: 语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的“SELECT DISTINCT words.word FROM definition_word JOIN wo”附近使用正确的语法(SQL:选择 topwords.*、mw.word as @ 987654326@ from topwords left join SELECT DISTINCT words.word FROM definition_word JOIN words ON words.id = definition_word.word_id WHERE definition_word.user_id = 2 as mw on topwords.word = mw.word) 我认为您需要将 SELECT 语句放入大括号中,例如:“(SELECT DISTINCT ..... $user as mw)”

相关文章

将 SQL 查询转换为查询生成器样式

{】将SQL查询转换为查询生成器样式【英文标题】:convertSQLquerytoquerybuilderstyle【发布时间】:2015-12-0819:41:39【问题描述】:我试图了解如何将SQL查询转换为laravel中的查询构建器样式。我的SQL查询是:$tagid=Db::select("SELECT`id`FROM`wouter...}

如何将左连接横向 SQL 查询转换为 Laravel Eloquent 查询?

{】如何将左连接横向SQL查询转换为LaravelEloquent查询?【英文标题】:HowtoconvertleftjoinlateralSQLquerytoLaravelEloquentquery?【发布时间】:2021-08-1010:38:48【问题描述】:我想在Eloquent查询中转换以下PostgreSQL查询:SELECTncts_info.nct_id,A.agency_mod...}

Laravel 查询生成器不在

{】Laravel查询生成器不在【英文标题】:LaravelQueryBuilderWHERENOTIN【发布时间】:2015-04-0608:10:59【问题描述】:我有以下sql查询SELECT*FROMexamsWHEREexams.idNOTIN(SELECTexamIdFROMtestresults)如何将其转换为Laravel查询构建器格式?谢谢。【问题讨...}

如何在 laravel 模型中转换此 sql 查询

{】如何在laravel模型中转换此sql查询【英文标题】:howtoconvertthissqlqueryinlaravelmodel【发布时间】:2020-07-2918:56:10【问题描述】:大家好,我想转换一下这个SELECTcount(*)from`customer`WHEREDATE(created_at)BETWEENDATE_ADD(CURDATE(),INTERVAL-2DAY)ANDCURDATE...}

将 mysql 查询转换为 laravel 查询生成器

{】将mysql查询转换为laravel查询生成器【英文标题】:convertmysqlquerytolaravelquerybuilder【发布时间】:2019-03-0900:42:57【问题描述】:我想将此查询转换为Laravel查询构建器语法。任何帮助。谢谢。SELECTc.id,c.name,c.priceFROMcarsc,garagegWHERE(g.n...}

如何将原生 PHP 转换为查询构建器 Laravel?

{】如何将原生PHP转换为查询构建器Laravel?【英文标题】:HowcanIconvertnativePHPintoquerybuilderLaravel?【发布时间】:2019-03-0703:15:24【问题描述】:如何从原生php转换为查询构建器laravel$statsMoneyInPlay=array();$sql_query="SELECTUNIX_TIMESTAMP(Date(ts))...}

Laravel 查询生成器 从子查询中选择

{】Laravel查询生成器从子查询中选择【英文标题】:LaravelqueryBuilderSelectfromsubquery【发布时间】:2021-04-2716:20:27【问题描述】:我正在尝试将sql查询转换为Laravel查询构建器,但我很难理解在Laravel中哪个是FORMSUBQUERY的最佳方式,因...}

将 SQL 转换为 Laravel 5.1

{】将SQL转换为Laravel5.1【英文标题】:ConvertingSQLtoLaravel5.1【发布时间】:2016-08-0122:41:27【问题描述】:我正在将一些项目从纯PHP转换为Laravel5.1,但在转换此查询时遇到问题:\\DB::select("SELECTTABLE_NAMEasnombre,FORMAT(TABLE_ROWS,0)ascantidadFRO...}

Laravel 将 SQL 转换为 Eloquent:按 sum() 排序

{】Laravel将SQL转换为Eloquent:按sum()排序【英文标题】:LaravelConvertSQLtoEloquent:orderbyasum()【发布时间】:2021-11-0105:24:50【问题描述】:我是Eloquent和Laravel的新手。我尝试了多种语法,但我找不到让它工作的方法。这是我要转换的查...}

我想将 SQL 查询转换为 Laravel eloquent

{】我想将SQL查询转换为Laraveleloquent【英文标题】:IwanttoconvertSQLquerytoLaraveleloquent【发布时间】:2019-03-0204:48:58【问题描述】:我有这个SQL查询:SELECT*FROMpostsRIGHTJOINfilesONposts.id=files.fileable_idGROUPBYposts.idHAVINGposts.user_id=3125它可以工...}

Copyright ©2021 时间戳转换器 小常识 114pp | 陕ICP备18005036号