这是我的第一篇文章,我正在将一个 PHP 纯项目转换为 Laravel,客户希望报告像旧项目一样工作,报告是 SQL 语句,我想将其制作/转换成Laravel 查询。 请注意从患者表中读取的所有查询。
表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
答案 0 :(得分:0)
您可以在这里做两件事: 为您的 SQL 查询创建存储过程或在 mySQL 中创建患者表的视图。 它将帮助您轻松地转换为 Laravel,为您的整个项目获取数据,并且它会快速优化。