简体   繁体   English

如何使用查询生成器 Laravel 执行此 SQL

[英]How can I do this SQL with Query Builder Laravel

I'm new to Laravel and I'm confused how to do SQL below in Query Builder.我是 Laravel 的新手,我很困惑如何在 Query Builder 中执行下面的 SQL。

SELECT 
    * 
FROM (
    SELECT
        i.ID
        ,l.NOMELOJA
        , CONVERT(VARCHAR,DATALOG, 103) AS DATA
        , DATEPART(HOUR,DATALOG) AS HORA
        , CASE WHEN LOGINTEGRACAO = 'LOJA CONSULTADA COM SUCESSO' THEN 'OK' ELSE 'NOK' END AS STATUS
    FROM DMN_INTEGRACAO_LOG i, DMN_LOJAS_LINKED_SERVER l
    WHERE TABELA='DMN_LOJAS_ORDERS'
    AND DATALOG >= (SELECT CONVERT(nvarchar, GETDATE(), 112))
    AND i.ID = l.ID
    ) A
WHERE STATUS = 'NOK'
GROUP BY ID
    , NOMELOJA
    , CONVERT(VARCHAR,DATA, 103)
    , HORA
    , STATUS
ORDER BY 1,2,3;

Please refer to the documentation .请参阅文档

When I need complex queries as this one I like to use RAW joining.当我需要像这样的复杂查询时,我喜欢使用 RAW 连接。 At its base, your query is a more complicated version of the following one在其基础上,您的查询是以下查询的更复杂版本

Model::where('status', 'NOK')
->leftJoin(DB::raw('SELECT * FROM A /*use raw query */'))
->groupBy('ID')
->orderBy('1')
->get()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM