PHP

[라라벨]mysql 쿼리를 챗지피티와 제미나이를 이용해 orm으로 변경하기

에스크리토 2025. 6. 23. 13:28
반응형

챗지피티와 제미나이를 비교해보자.

 

select m.*,b.photo, ml.mylevel , z.gn, z.bn
from xc_memo m
join xc_member b on m.userid=b.email
left join xc_member_levels ml on ml.userid=m.userid
left join (
select mg.memoid, sum(mg.good) as gn, sum(mg.bad) as bn from xc_memo_grade mg group by memoid
) z on z.memoid=m.memoid
where m.status=1 and m.bid=100 order by ifnull(m.pid,m.memoid) asc, m.memoid asc

 

이런 간다하지 않은 쿼리를 두 ai에게 라라벨 orm으로 변경해달라고 해보았다.

 

먼저 챗지피티

$results = DB::table('xc_memo as m')
    ->join('xc_member as b', 'm.userid', '=', 'b.email')
    ->leftJoin('xc_member_levels as ml', 'ml.userid', '=', 'm.userid')
    ->leftJoin(DB::raw('(
        select mg.memoid, sum(mg.good) as gn, sum(mg.bad) as bn
        from xc_memo_grade mg
        group by mg.memoid
    ) as z'), 'z.memoid', '=', 'm.memoid')
    ->select(
        'm.*',
        'b.photo',
        'ml.mylevel',
        'z.gn',
        'z.bn'
    )
    ->where('m.status', 1)
    ->where('m.bid', 100)
    ->orderByRaw('IFNULL(m.pid, m.memoid) ASC, m.memoid ASC')
    ->get();

 

제미나이는


$memos = Memo::query()
    ->select('xc_memo.*', 'xc_member.photo', 'xc_member_levels.mylevel', 'z.gn', 'z.bn')
    ->join('xc_member', 'xc_memo.userid', '=', 'xc_member.email')
    ->leftJoin('xc_member_levels', 'xc_member_levels.userid', '=', 'xc_memo.userid')
    ->leftJoinSub(function ($query) {
        $query->select('memoid', DB::raw('sum(good) as gn'), DB::raw('sum(bad) as bn'))
            ->from('xc_memo_grade')
            ->groupBy('memoid');
    }, 'z', 'z.memoid', '=', 'xc_memo.memoid')
    ->where('xc_memo.status', 1)
    ->where('xc_memo.bid', 100)
    ->orderByRaw('ifnull(xc_memo.pid, xc_memo.memoid) asc, xc_memo.memoid asc')
    ->get();

 

하지만 제미나이 쿼리는 오류가 난다. 오류가 나니 바꿔달라고 해도 말을 못알아먹고 바꾸질 못했다.

 

라라벨 orm으로 바꿀때는 챗지피티를 쓰도록 하자.

 

 

 

 

반응형