Snažím sa vytvoriť nasledujúci vnorený komplexný dotaz s nástrojom Laravel Query Builder. Používam laravel 4.0. Hlavný problém so vnoreným pripojením.
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
Prosím pomôžte..
odpovede:
1 pre odpoveď č. 1Môžete to povedať DB:raw
nasledovne:
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");
});
Viem, že to nie je to, čo presne chcete, ale je to čiastočné riešenie. Vyšetrovaním som zistil, že Laravel 4.x nepodporuje. Bolo tam ťahať o tom pred rokom v Laravel 3.x, ale na konci sa to nepodarilo. V každom prípade môžete vidieť všetky možnosti, ktoré môžete použiť pri vytváraní dotazov Builder.php
.
Tiež môžete použiť DB:statement
keď nemôžete vykonať komplikovaný dopyt pomocou programu Query Builder alebo výkresového ORM.