简体   繁体   English

原始查询连接左侧选择到 laravel 8 查询

[英]raw query join left with select to laravel 8 query

i'm using raw query on my laravel function, and i wanna make it into laravel query builder, but i really have no idea how to do it, i've read laravel documentary about advanced join clause or subquery joins, but still cant figuring it out how to convert it我在我的 laravel 函数上使用原始查询,我想把它变成 laravel 查询生成器,但我真的不知道怎么做,我读过 laravel 关于高级连接子句或子查询连接的纪录片,但仍然无法计算知道如何转换它

raw query :原始查询:

$buku = DB::select(
        DB::raw('
        SELECT buku.*, kategory, tag
        FROM buku
        LEFT JOIN kategori_buku ON buku.id_kategori = kategori_buku.id
        LEFT JOIN detail_buku_tag ON buku.id = detail_buku_tag.id_buku
        LEFT JOIN (SELECT tag_buku.id, GROUP_CONCAT(tag) AS tag FROM tag_buku) AS tag_buku ON tag_buku.id = detail_buku_tag.id_tag
        GROUP BY buku.id')
    );

try this尝试这个

$buku = \DB::table('buku')
->select([
    'buku.*',
    'kategory.*',
    'tag.*'
])
->leftJoin('kategori_buku', 'kategori_buku.id', '=', 'buku.id_kategori')
->leftJoin('detail_buku_tag', 'detail_buku_tag.id_buku', '=', 'buku.id')
->leftJoin(DB::raw('SELECT tag_buku.id, GROUP_CONCAT(tag) AS tag FROM tag_buku) AS tag_buku ON tag_buku.id = detail_buku_tag.id_tag GROUP BY buku.id'))
->get();

there some sql chaining issue.有一些 sql 链接问题。 @Ramiz Kongulov forget to split group by clause try this. @Ramiz Kongulov 忘记按子句拆分组试试这个。

$buku = \DB::table('buku')
    ->select(['buku.*','kategory.*', 'tag.*'])
    ->leftJoin('kategori_buku', 'kategori_buku.id', '=', 'buku.id_kategori')
    ->leftJoin('detail_buku_tag', 'detail_buku_tag.id_buku', '=', 'buku.id')
    ->leftJoin(\DB::raw('(SELECT tag_buku.id, GROUP_CONCAT(tag) AS tag FROM tag_buku) AS tag_buku'),
        'tag_buku.id', '=', 'detail_buku_tag.id_tag')
    ->groupBy('buku.id')
    ->get();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM