簡體   English   中英

將 SQL 查詢轉換為 Laravel 查詢生成器

[英]convert a SQL Query to Laravel Query Builder

this is my first post, I'm working on converting a PHP Pure project to Laravel, and the client wants the report to work like the old project, and the report is SQL statement and I want to make/convert it into Laravel Query. 注意從患者表中讀取的所有查詢。

patient的表結構

CREATE TABLE `patient` (
  `idPatient` int(11) NOT NULL,
  `idUser_Agent` int(11) DEFAULT NULL,
  `PatientFName` varchar(250) DEFAULT NULL,
  `PatientLName` varchar(100) DEFAULT NULL,
  `PatientDOB` date DEFAULT NULL,
  `PatientGender` varchar(10) DEFAULT NULL,
  `PatientAddress` varchar(250) DEFAULT NULL,
  `PatientCity` varchar(250) DEFAULT NULL,
  `PatientState` varchar(5) DEFAULT NULL,
  `PatientZip` varchar(10) DEFAULT NULL,
  `PatientPhone` varchar(15) DEFAULT NULL,
  `PatientInsuranceName` varchar(250) DEFAULT NULL,
  `PatientInsurancePolicy` varchar(45) DEFAULT NULL,
  `PatientPhysicanFName` varchar(100) DEFAULT NULL,
  `PatientPhysicanLName` varchar(100) DEFAULT NULL,
  `PatientPhysicianAddress` varchar(250) DEFAULT NULL,
  `PatientPhysicianCity` varchar(45) DEFAULT NULL,
  `PatientPhysicianState` varchar(5) DEFAULT NULL,
  `PatientPhysicianZip` varchar(10) DEFAULT NULL,
  `PatientPhysicianPhone` varchar(20) NOT NULL,
  `PatientPhysicianFax` varchar(20) NOT NULL,
  `PatientPhysicianNPI` varchar(45) DEFAULT NULL,
  `PatientHeight` varchar(50) DEFAULT NULL,
  `PatientWeight` varchar(50) DEFAULT NULL,
  `BraceLine1` tinyint(1) DEFAULT NULL,
  `BL1From` date DEFAULT NULL,
  `BL1Type` varchar(45) DEFAULT NULL,
  `BL1Modify` varchar(45) DEFAULT NULL,
  `BL1Size` varchar(45) DEFAULT NULL,
  `BraceLine2` tinyint(1) DEFAULT NULL,
  `BL2From` date DEFAULT NULL,
  `BL2Type` varchar(45) DEFAULT NULL,
  `BL2Modify` varchar(45) DEFAULT NULL,
  `BL2Size` varchar(45) DEFAULT NULL,
  `AmountPaid` decimal(32,0) DEFAULT NULL,
  `PaidDate` date DEFAULT NULL,
  `TrackingNumber` varchar(50) DEFAULT NULL,
  `TrackingNumber2` varchar(50) DEFAULT NULL,
  `BL1Charges` decimal(32,0) DEFAULT NULL,
  `BL1Unit` int(11) DEFAULT NULL,
  `BL2Charges` decimal(32,0) DEFAULT NULL,
  `BL2Unit` int(11) DEFAULT NULL,
  `Comment` varchar(5000) DEFAULT NULL,
  `DateAdded` date DEFAULT NULL,
  `PatientDO` varchar(50) DEFAULT NULL,
  `PatientRecording` varchar(50) NOT NULL,
  `PatientRecording2` varchar(50) NOT NULL,
  `PatientRelative` varchar(50) DEFAULT NULL,
  `FormStatus` varchar(250) DEFAULT NULL,
  `AmountPaid2` decimal(32,0) DEFAULT NULL,
  `PaidDate2` date DEFAULT NULL,
  `ReturnReason` varchar(50) DEFAULT NULL,
  `ModifiedDate` date DEFAULT NULL,
  `EmailShip1` int(11) NOT NULL DEFAULT 0,
  `EmailShip2` int(11) NOT NULL DEFAULT 0,
  `FormSubStatus` varchar(250) DEFAULT NULL,
  `EmailShip1Date` date DEFAULT NULL,
  `EmailShip2Date` date DEFAULT NULL,
  `Return` tinyint(4) NOT NULL,
  `DOStatus` varchar(50) NOT NULL,
  `DOSubStatus` varchar(50) NOT NULL,
  `ShippedStatus` varchar(50) NOT NULL,
  `ShippedStatus2` varchar(50) NOT NULL,
  `BraceLine3` tinyint(4) DEFAULT NULL,
  `BL3From` date DEFAULT NULL,
  `BL3Type` varchar(45) DEFAULT NULL,
  `BL3Modify` varchar(45) DEFAULT NULL,
  `BL3Size` varchar(45) DEFAULT NULL,
  `BL3Unit` int(11) DEFAULT NULL,
  `BL3Charges` decimal(32,0) DEFAULT NULL,
  `AmountPaid3` decimal(32,0) DEFAULT NULL,
  `PaidDate3` date DEFAULT NULL,
  `EmailShip3` int(11) NOT NULL DEFAULT 0,
  `EmailShip3Date` date DEFAULT NULL,
  `ShippedStatus3` varchar(50) DEFAULT NULL,
  `PatientDO2` varchar(50) DEFAULT NULL,
  `HMO` tinyint(4) DEFAULT NULL,
  `HMOStatus` varchar(200) DEFAULT NULL,
  `PPO` tinyint(4) NOT NULL,
  `Portal` varchar(50) DEFAULT NULL,
  `EmailSchedule` int(11) NOT NULL DEFAULT 0,
  `RelativeType` varchar(50) NOT NULL,
  `BEVStatus` varchar(50) NOT NULL,
  `QAStatus` varchar(50) NOT NULL DEFAULT 'Pending',
  `id_UserAgent_QA` varchar(50) NOT NULL,
  `Catheters` tinyint(4) NOT NULL,
  `CathetersType` varchar(100) NOT NULL,
  `CathetersSize` varchar(50) NOT NULL,
  `CathetersBrand` varchar(100) NOT NULL,
  `Walker` tinyint(4) NOT NULL,
  `WalkerType` varchar(100) NOT NULL,
  `Reimbursement` tinyint(4) DEFAULT NULL,
  `R_Date` date DEFAULT NULL,
  `CheckNo` varchar(50) DEFAULT NULL,
  `R_Amount` decimal(32,0) DEFAULT NULL,
  `DrCallMade` tinyint(4) DEFAULT NULL,
  `StartDate` date DEFAULT NULL,
  `EndDate` date DEFAULT NULL,
  `PickupTrackingNumber` varchar(50) DEFAULT NULL,
  `PickupTrackingNumber2` varchar(50) DEFAULT NULL,
  `BracePickup` tinyint(4) DEFAULT NULL,
  `PickupReason` varchar(50) DEFAULT NULL,
  `PickupDate` date DEFAULT NULL,
  `FaxSent` tinyint(4) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

SQL 查詢

SELECT
    SUM(pt1) AS SENT,
    SUM(pt2) AS DOBACK,
    SUM(pt2) * 100 / SUM(pt1 + pt2) AS percentage,
    DateAdded,
STATUS AS
    FormStatus
FROM
    (
        (
        SELECT
            1 AS Pt1,
            0 AS pt2,
            "SENT TO RX1" AS
        STATUS
            ,
            DateAdded
        FROM
            patient
        WHERE
            (dostatus = "Sent to RX1") AND(portal = "NationalRXGA")
    )
UNION ALL
    (
    SELECT
        0 AS p1,
        1 AS PatientNumbers2,
        "SENT TO RX1" AS
    STATUS
        ,
        DateAdded
    FROM
        patient
    WHERE
        (dosubstatus = "DO BACK") AND(portal = "NationalRXGA")
)
UNION ALL
    (
    SELECT
        1 AS PatientNumbers1,
        0 AS patientnumber2,
        "SENT TO RX2" AS
    STATUS
        ,
        DateAdded
    FROM
        patient
    WHERE
        (dostatus = "Sent to RX2") AND(portal = "NationalRXGA")
)
UNION ALL
    (
    SELECT
        0 AS p1,
        1 AS PatientNumbers2,
        "SENT TO RX2" AS
    STATUS
        ,
        DateAdded
    FROM
        patient
    WHERE
        (dosubstatus = "DO BACK") AND(portal = "NationalRXGA")
)
    ) AS t
GROUP BY
STATUS

您可以在這里做兩件事:為您的 SQL 查詢創建存儲過程或在 mySQL 中創建患者表的視圖。 它將幫助您輕松轉換為 Laravel 為您的整個項目獲取數據,並且它將快速達到最佳狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM