[英]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.