【发布时间】:2015-09-23 11:35:21
【问题描述】:
我在我的应用程序中使用 Laravel 5.1。
我的 MySQL 查询是
SELECT * FROM (SELECT uu.*,t.left_id AS meb_id,(CAST(t.pair AS UNSIGNED) - IFNULL(p.pair,0)) AS pair FROM (SELECT left_id,
(CASE
WHEN ((SELECT COUNT(meb_id) FROM user_count WHERE left_id=u.left_id AND active = 1 AND join_date <= '1442255400000') >= (SELECT COUNT(meb_id) FROM user_count WHERE right_id=u.left_id AND active = 1 AND join_date <= '1442255400000')*2)
THEN (SELECT COUNT(meb_id) FROM user_count WHERE right_id=u.left_id AND active = 1 AND join_date <= '1442255400000')
WHEN ((SELECT COUNT(meb_id) FROM user_count WHERE left_id=u.left_id AND active = 1 AND join_date <= '1442255400000') < (SELECT COUNT(meb_id) FROM user_count WHERE right_id=u.left_id AND active = 1 AND join_date <= '1442255400000')*2)
THEN ((SELECT COUNT(meb_id) FROM user_count WHERE right_id=u.left_id AND active = 1 AND join_date <= '1442255400000') /2)
WHEN ((SELECT COUNT(meb_id) FROM user_count WHERE right_id=u.left_id AND active = 1 AND join_date <= '1442255400000') >= (SELECT COUNT(meb_id) FROM user_count WHERE left_id=u.left_id AND active = 1 AND join_date <= '1442255400000')*2)
THEN (SELECT COUNT(meb_id) FROM user_count WHERE left_id=u.left_id AND active = 1 AND join_date <= '1442255400000')
WHEN ((SELECT COUNT(meb_id) FROM user_count WHERE right_id=u.left_id AND active = 1 AND join_date <= '1442255400000') < (SELECT COUNT(meb_id) FROM user_count WHERE left_id=u.left_id AND active = 1 AND join_date <= '1442255400000')*2)
THEN ((SELECT COUNT(meb_id) FROM user_count WHERE left_id=u.left_id AND active = 1 AND join_date <= '1442255400000') / 2) END
) AS pair
FROM user_count AS u WHERE left_id <> 0 GROUP BY left_id) AS t
LEFT JOIN users AS uu ON uu.`id` = t.left_id
LEFT JOIN `total_payment` p ON t.left_id = p.`meb_id`
WHERE t.pair <> 0) AS f WHERE f.pair > 0 AND f.active = 1
如何在 Laravel Eloquent 中转换它?我不知道如何在 laravel eloquent 中使用when case。
我的数据库架构是这样的
total_payment表
谁能帮帮我?
【问题讨论】:
-
不确定我是否理解您为什么要使用 Eloquent 执行此操作,而不是使用带有 DB 外观的直接 SQL 查询。
-
@Pitchinnate 这个查询需要太多时间来执行,所以我认为如果我使用 eloquent 运行它会更好。
-
那我想你不明白什么是雄辩。
-
Eloquent 不会加快您的数据库查询速度。如果有的话,它可能会增加时间,因为所有 ORMS 都有一些开销。在低 SQL 级别,Laravel 仍然向 MySQL 发送相同的查询(DBS 只了解 SQL 期间),仍然是相同的 SELECT、INSERT、UPDATE。 ORM 可以使代码更易读。您可以在代码中执行诸如 User::all() 之类的操作,然后可以访问诸如 User->name 之类的属性,而不是代码中的一堆冗长杂乱的查询和字符串连接。它真的是为了可读性和可移植性(没有特定的 sql = 可移植)。
标签: mysql laravel-5.1