Аз се борят да се изгради следната вложена сложна заявка с Laravel Query Builder. Аз съм с ларавел 4.0. Основният проблем с вложените връзки.
SELECT clubs.id, clubs.slug, clubs.name as `club_name`, clubs.state, clubs.category, clubs.live, `m`.`total_members`, `m`.`online_members`, `m`.`offline_members`, `m`.`last_7days_members` as `total_members_last_7days`
FROM clubs
LEFT JOIN
(
SELECT id, club_id, count(*) as `total_members`, SUM(online_member = 1) AS online_member
FROM members
LEFT JOIN
(
SELECT posts.id, posts.member_id, posts.title, posts.body
FROM posts
WHERE posts.transaction_id IS NOT NULL
) p on p.member_id = members.id
WHERE (`post_verfied` is null or `post_verfied` = 1)
AND `members`.`deleted_at` is null
group by club_id
) m on m.club_id = clubs.id
LEFT JOIN comments on comments.member_id = m.id
WHERE clubs.`deleted_at` is null
group by `clubs`.name
Моля помогнете..
Отговори:
1 за отговор № 1Можете да го разгледате DB:raw
както следва:
DB:table("table1")->leftJoin(DB::raw("(select *
from table2
join table3 on table3.id = table2.id) as mytable"),
function($join)
{
$join->on("table1.id", "=", "mytable.id");
});
Знам, че това не е точно това, което искате, но това е частично решение. Разследването, което открих, Laravel 4.x не подкрепя. Имаше дърпам за това преди година в Laravel 3.x, но в края на краищата не беше приложено. Винаги можете да видите всички опции, които можете да използвате с инструмента за създаване на заявки Builder.php
.
Също така можете да използвате DB:statement
когато не можете да изпълнявате сложна заявка с Query Builder или с красноречив ORM.