通过Eager Loading从Eloquent获取RAW SQL查询

时间:2014-06-23 20:41:12

标签: php sql laravel laravel-4 eloquent

我有以下代码:

$books = Book::with(array('score' => function($query) use ($id)
            {
               $query->where('media_type_id','=',$id)->orderBy('sorting_score','ASC');
            }))->get();

我有一张带书籍的桌子和一张带有media_score的桌子 - 我有一个属于关系。

当我做toSQL();它只返回我从书本中选择*而不是一个急切的加载等价物。

我需要等待的热切加载,因为我希望使用缓存系统(没有remember函数)所以我想将原始查询用作键。

转储查询日志不是一个选项,因为它在查询运行后发生。

2 个答案:

答案 0 :(得分:1)

尝试barryvdh plugin。它真的可以帮助你调试你的laravel应用程序。它包括几个收藏家

  
      
  1. QueryCollector :显示所有查询,包括绑定+计时。
  2.   
  3. RouteCollector :显示有关当前路线的信息。
  4.   
  5. ViewCollector :显示当前加载的视图。 (可选:显示共享数据)
  6.   
  7. EventsCollector :显示所有活动。
  8.         

快乐的编码;

答案 1 :(得分:0)

尝试

DB::enableQueryLog();
  Book::with(array('score' => function($query) use ($id)
            {
               $query->where('media_type_id','=',$id)->orderBy('sorting_score','ASC');
            }))->get();

$query_dump = DB::getQueryLog();

并打印$query_dump