Как выполнить SQL-запрос к таблицам в нескольких базах данных с помощью Eloquent ORM? - PullRequest
1 голос
/ 28 октября 2019

У меня есть SQL-запрос к таблицам в нескольких базах данных, и я хочу выполнить его через Eloquent ORM

У меня также есть следующие ограничения:

  • Я использую SQL Server
  • Мои имена баз данных: HN_Ondata и EVS_BKP

Вот мой SQL-запрос, пожалуйста, помогите мне запустить его с Eloquent ORM.

SELECT CONVERT(VARCHAR(10), CallLocalTime, 111) CallLTime,
    COUNT(ID) IDCount,
    SUM(IvrDuration) IvrDSum,
    SUM(TotalWaitDuration) TotalWDuration
FROM
    (
    SELECT
        Id,
        calltype,
        CallLocalTime,
        CallLocalTimeString,
        ConvDuration,
        IvrDuration,
        TotalWaitDuration,
        FirstAgent 
    FROM
        HN_Ondata.dbo.ODCalls UNION ALL
    SELECT
        Id,
        calltype,
        CallLocalTime,
        CallLocalTimeString,
        ConvDuration,
        IvrDuration,
        TotalWaitDuration,
        FirstAgent 
    FROM
        EVS_BKP.dbo.ODCalls_2016_11 
) x  

WHERE 
    CallLocalTime > '2016-11-01'
    AND CallLocalTime < '2016-11-30'
    AND calltype = 1 AND IvrDuration > 0 
    AND ConvDuration = 0 
    AND TotalWaitDuration > 0 
    AND ( FirstAgent IS NULL OR FirstAgent = 0 ) 
GROUP BY
    CONVERT(VARCHAR(10), CallLocalTime, 111)

1 Ответ

0 голосов
/ 29 октября 2019

используйте Illuminate \ Database \ Capsule \ Manager в качестве БД;

<?php
$ODCalls = DB::table("ODCalls")
                                ->select(DB::raw('COUNT(ID) IDCount'))
                                ->select(
                                "ID"
                                , "Calltype"
                                , "CallLocalTime"
                                , "CallLocalTimeString"
                                , "ConvDuration"
                                , "IvrDuration"
                                , "TotalWaitDuration"
                                , "FirstAgent"
                        );


                        $ODCalls_union = DB::table("ODCalls_2016_12")
                                ->select(
                                        "ID"
                                        , "Calltype"
                                        , "CallLocalTime"
                                        , "CallLocalTimeString"
                                        , "ConvDuration"
                                        , "IvrDuration"
                                        , "TotalWaitDuration"
                                        , "FirstAgent"
                                )
                                ->where('CallLocalTime', '>', '2016-12-01')
                                ->where('CallLocalTime', '<', '2016-12-30')
                                ->where('Calltype', 1)
                                ->where('ConvDuration', 0)
                                ->where('TotalWaitDuration', '>', 0)
                                ->where(function ($query) {
                                    $query->where('FirstAgent', '')->orWhere('FirstAgent', 0);
                                })
                                ->union($ODCalls);


                        $result= $ODCalls_union->get()->groupBy(function($row) {
                            return Carbon::parse($row->CallLocalTime)->format('Y-m-d');
                        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...