2016-07-01 6 views
1

사용자 테이블과 위치 테이블이 있으며 모델에 관계가 있습니다.Laravel Eloquent에서 생성 된 SQL

사용자 모델

class User extends Eloquent { 
    public function position() 
    { 
     return $this->belongsTo('Position'); 
    } 
} 

위치 모델

class Position extends Eloquent { 
    public function users() 
    { 
     return $this->hasMany('User'); 
    } 
} 

나는이 작업을 수행하려고합니다.

$users = User::find(1); 
echo $users->lastname . "<br>"; // output the lastname 
echo $users->position->name . "<br>"; // output the position name 
echo $users->toSql(); // output "Select * from user" 

제 질문은 어떻게 생성 된 원시 SQL을 얻을 수 있습니까? something like

select s.* from users s left join positions p on p.id = s.position_id where s.id = 1 

어이 Eloquent standalone을 사용합니다. 미리 감사드립니다.

답변

0

DB::enableQueryLog();을 사용한 다음 DB::getQueryLog();을 시도하면 사용할 수있는 배열이 생성됩니다. 그게 작동하는지 알려주세요!

use Illuminate\Support\Facades\DB; 

DB::enableQueryLog(); 

$users = User::find(1); 
echo $users->lastname . "<br>"; // output the lastname 
echo $users->position->name . "<br>"; // output the position name 

foreach(DB::getQueryLog() as $item){ 
    echo $item["query"] . "<br>"; 
} 
+0

은 독립형 웅변으로 제공되는 DB 외관입니까? 그것은 작동하지 않으며 그것은 DB 클래스처럼 오류를 throw합니다 .. –

+0

@ jaytemp 파일에 DB 클래스에 대한 올바른 경로를 포함해야합니다. 업데이트를 했습니까? – Markinson

관련 문제