2016-06-30 4 views
1

Laravel 원시 SQL 쿼리 기능을 사용하고 있습니다. 그리고 같은 쿼리를 수행해야합니다. 이 코드에는 너무 많은 조인과 검사가 있습니다. 따라서 원시 SQL을 사용하는 것이 좋습니다. 모든 것이 잘 작동합니다. 그러나 같은 것을 사용할 때 오류가 있습니다.Raw SQL을 사용할 때 Laravel에서 like 절을 사용하는 방법은 무엇입니까?

$Stars = DB::select('select v.videoid,s.seriesshortname, v.videotitle, v.VideoShortName, v.VideoImagepath, v.Views, v.Likes, v.Dislikes, v.Rating, v.videocategory, v.lastupdated,v.videocategory,v.seriesid,v.genreid,v.studioid from tblvideo v, tblpornstarvideo pv,tblseries s,tblpornstar p where v.videoid = pv.videoid and v.seriesid = s.seriesid and upper(v.Active) = \'Y\' and pv.psid = p.psid and pv.psid = :id and (v.site = 1 or v.site=3) and v.videotitle like \':letter%\' order by v.videotitle limit 6 offset :offset', ['id' => $id, 'offset' => $offset]); 

같은 코드를 확인하십시오. (v.videotitle like \ ': letter % \')

그리고 그 방법을 알려주십시오. 여기에 문서를 따라했습니다. https://laravel.com/docs/5.1/database

+0

원시 SQL을 사용하는 것이 좋지 않습니다. 사실 더 나빠요. 그것은 미래에 그것을 유지하기 위해 부름받을 수있는 가난한 영혼에게는 PHP 코드를 읽기 쉽게 만듭니다. 성능 측면에서 볼 때 유창한 쿼리를 작성할 때와 동일합니다. – apokryfos

+0

@apokryfos 일반적으로 쿼리 작성기를 사용하는 것이 가장 좋습니다. 그러나 작업 완료를 얻을 수없는 경우가 있습니다. 이 경우인지 확실하지 않지만 방법을 배울 수있는 기회입니다. – tadman

+0

@apokryfos 너무 많은 조인과 조건이 있습니다. 나는 또한 표준 설득력있는 쿼리 만 사용하고 싶다. 그러나 나는 노력했다. 그리고 그것은 매우 어려웠다. :( –

답변

2

와일드 카드를 쿼리가 아닌 변수에 추가하고 따옴표를 추가하지 마십시오. 또한 문자 변수를 전달하지 않습니다.

$Stars = DB::select("select v.videoid,s.seriesshortname, v.videotitle, v.VideoShortName, v.VideoImagepath, v.Views, 
v.Likes, v.Dislikes, v.Rating, v.videocategory, v.lastupdated,v.videocategory,v.seriesid,v.genreid,v.studioid 
from tblvideo v, tblpornstarvideo pv,tblseries s,tblpornstar p 
where v.videoid = pv.videoid and v.seriesid = s.seriesid and 
upper(v.Active) = 'Y' and pv.psid = p.psid and pv.psid = :id and (v.site = 1 or v.site=3) 
and v.videotitle like :letter order by v.videotitle limit 6 offset :offset", ['id' => $id, 'letter'=> $letter.'%', 'offset' => $offset]); 
+0

위대한.이 내 문제를 해결 :) 감사합니다 많은 친구 :) –

관련 문제