Как я могу сделать это SQL с помощью Query Builder Laravel - PullRequest
0 голосов
/ 07 января 2020

Я новичок в Laravel, и я запутался, как сделать SQL ниже в Query Builder.

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;

1 Ответ

0 голосов
/ 07 января 2020

Пожалуйста, обратитесь к документации .

Когда мне нужны сложные запросы, как этот, мне нравится использовать соединение RAW. По сути, ваш запрос представляет собой более сложную версию следующего

Model::where('status', 'NOK')
->leftJoin(DB::raw('SELECT * FROM A /*use raw query */'))
->groupBy('ID')
->orderBy('1')
->get()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...