2014-12-10 7 views
1

에서 Laravel 4.2 컴파일 된 쿼리를 가져오고 싶습니다. 같은laravel Eloquent ORM - 컴파일 된 쿼리를 얻는 방법?

$product = Product::where('id', '=', '100')->get(); 

내가 컴파일하려는 쿼리 : 질문의

select * from products where id = 100 

목적입니다 : 내가 다른 쿼리에서 서브 쿼리로 사용하려는

이 내가 가진 것입니다.

나는 수색을하고 Class GrammerClass MySQL을 찾았지만 해결책을 찾지 못했습니다.

해결책이 있습니까?

귀하의 도움에 감사드립니다.

+0

이 당신이 그것을 http://stackoverflow.com/a/24838367/784588 –

답변

-1

당신은 참조 예를 아래 참조 subqueries에 대한 grammer를 사용할 수 있습니다.

4

가장 쉬운 방법은 대부분 쿼리가 실행되는 것이 아니라 방금 실행 된 쿼리를 찾는 것입니다. 다음과 같이 입력하십시오 :

function latestQuery() 
{ 
    $queries = DB::getQueryLog(); 
    return end($queries); 
} 

다행히도 용도에는 동일합니다.

+0

어떻게 내 목적은 다른 무언가이다. 다른 쿼리에서 '하위 쿼리'로 사용하고 싶습니다. –

+0

실제 검색어와 가장 근접하기 때문에 실제 상황을 더 잘 설명해야합니다. – Martijn

1

라우트 파일 (개발 단계)에 이벤트 수신기를 등록하면 laravel 쿼리 이벤트를 수신하고 var_dump 실행 된 쿼리를 수신 할 수 있습니다.

Event::listen('illuminate.query', function($sql) 
{ 
    var_dump($sql); 
}); 

그러나 이것은 지저분 해 보일 것입니다. 따라서 Clockwork과 같은 것을 사용하는 것이 좋습니다. 그것은 굉장합니다, 당신은 귀하의 브라우저에서 실행 된 모든 쿼리를 볼 수 있습니다.

$users = DB::table('users') 
      ->where('user.id', '=', $userID) 
      ->join('product', 'product.userid', '=', 'user.id'); 

$price = $users->select(array(DB::raw('SUM(price)'))) 
       ->grammar 
       ->select($users); // Compiles the statement 

$result = DB::table('users')->select(array(DB::raw("({$price}) as price)))->get(); 

이 메인 쿼리에 하위 쿼리를 추가

+0

내 목적이 다른 것입니다. 다른 쿼리에서 '하위 쿼리'로 사용하고 싶습니다. –

+0

정확히하려는 것은 무엇입니까? 더 구체적으로 말하십시오. – Shhetri

1

는이 같은 SQL 쿼리를 얻을 수 있습니다 :

use DB;//write this at the top of the file above your Class 

DB::enableQueryLog();//Enable query logging 
$product = Product::where('id', '=', '100')->get(); 
dd(DB::getQueryLog());//print the SQl query