/ / Vnorené spojenie s Laravelom 4.0 - sql, laravel, laravel-4

Vložené spojenie s Laravelom 4.0 - sql, laravel, laravel-4

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ď č. 1

Môž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.