我是Laravel的新手我有一个复杂的查询,它是子查询和连接的组合 . 但不确定如何将原始查询转换为Laravel查询格式 . 这是我的查询的样子 .
我面临的问题主要是处理 AS
,因为这不是查询构建器中可用的函数我也试图理清 CASE
,但 u1
和 u2
看起来未定义 .
select `ep`.`id`, `ep`.`title`, `ep`.`slug`, `ep`.`status`, `ep`.`active`,`ep`.`visitor_id`,`ep`.`type`, `friends`.`customername`, `ep`.`created_at`, epblock.reference_id from enr_posts as ep
JOIN (SELECT
(CASE WHEN u2.id = 3
THEN u1.name
ELSE u2.name
END ) as customername,
(CASE WHEN u2.id = 3
THEN u1.id
ELSE u2.id
END ) as customer_id,
fr.status
FROM enr_friend_requests fr
JOIN enr_customers u1 ON fr.sent_by=u1.id
JOIN enr_customers u2 ON fr.received_by=u2.id
where (fr.sent_by=3 or fr.received_by=3) AND fr.status="accepted") as friends
ON ep.visitor_id=friends.customer_id
LEFT JOIN enr_post_customer_block as epblock
ON `ep`.`id` = epblock.reference_id AND epblock.customer_id=3
WHERE
`ep`.`active`=1 AND
`ep`.`status`=1 AND
epblock.reference_id IS NULL
ORDER BY
`ep`.`id` DESC
在线还有任何生成器工具吗?因为我研究的工具很少,但它们对我不起作用 .
谢谢!
1 回答
您可以使用Maurice Calhoun的在线工具 Orator 将原始和遗留
SQL
查询转换为Laravel数据库查询构建器版本 . 这个生成器对于学习Laravel的人来说也是一个很好的工具,因为它可以帮助他们将SQL
查询转换为查询构建器对象,因为学习新的ORM
有时可能是新开发人员面临的挑战 .更多信息在这里
https://laravel-news.com/convert-sql-laravel-builder-orator