2016-07-01 12 views
1

私はusersテーブルとポジションテーブルを持っており、私のモデルには関係があります。Laravel Eloquentで生成されたSQL

Userモデル

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を取得できますか?何かのように

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

私はEloquentスタンドアロンを使用しています。前もって感謝します。

答えて

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クラスのようなエラーをスローします。 –

+0

@jaytempファイル内のDBクラスへの正しいパスを含めるようにしてください。更新を行った – Markinson

関連する問題