当前位置: 首页 > 知识库问答 >
问题:

如何在Laravel之外使用雄辩的ORM的getQueryLog()?

艾国安
2023-03-14

我一直试图找出一种方法来记录SQL查询从雄辩的ORM,我在Zend框架1中使用。我遇到了这样调用的getQueryLog()方法:

$queries = DB::getQueryLog();

我发现Illumb\Database\Connection包含getQueryLog()方法,因此我尝试执行以下操作:

use Illuminate\Database\Connection as DB;

class IndexController
{
    .
    .
    .
    public function indexAction()
    {
        // do stuff (e.g. fetch/update/create rows) 
        $questions = Questions::all()
        .
        .
        $queries = DB::getQueryLog();
        var_dump($queries); exit;
        .
        // render view
    }
}

但是,我得到以下通知,它返回NULL:通知:未定义的属性:IndexController::$queryLog在 /var/www/qasystem/vendor/illuminate/database/Illuminate/Database/Connection.php行918 NULL

有人能建议我在拉威尔以外的地方怎么用这个吗?我在网上搜索过,看不到任何需要改变的地方,尽管我怀疑大多数例子都会在Laravel中使用。另外,Illumb\Database\Connection是正确的类吗?谢谢

共有2个答案

益锦程
2023-03-14

尽管年龄稍大,但我也遇到了同样的问题,使用toSql()对我没有帮助,因为我有多对多关系,并且雄辩地执行了更多的查询。

基于@patricus的评论,我让它这样工作:

function getTheThing() {
  (new Thing())->getConnection()->enableQueryLog();
  $thing = Thing::whereUid('something')
    ->with('AnotherThing')
    ->first();
  $loggedSqls = (new Thing())->getConnection()->getQueryLog();
  var_dump($loggedSqls);
}
令狐跃
2023-03-14

改用toSql方法。它将返回最终的查询命令。

请参见如何让查询生成器将其原始SQL查询输出为字符串?了解更多信息

 类似资料:
  • 在有说服力的ORM上,是否有一种较短的方法在Laravel中插入数据? 目前我正在这样做: 就像你看到的,所有的列都像属性一样命名。 我知道您可以将对象与all()函数和fetch()一起使用。但是我从另一个对象(soap服务器)获取数据。 有没有办法转换这个?也许在模型上?

  • 如何将以下查询转换为Laravel4雄辩ORM?

  • 问题内容: 一个简单的问题-如何在Laravel 4中按降序排列’id’进行排序 我的控制器的相关部分如下所示: 据我了解,您使用以下行: 但这与我上面的代码如何匹配? 问题答案: 如果您使用post作为模型(无依赖项注入),则还可以执行以下操作:

  • 我正在编写php代码,对于当前的项目,我正在使用laravel框架(带有雄辩的ORM)。在这个项目中,我创建了两个表:用户和任务。我想在这些表之间创建一个“一对多”的关系。因此,一个用户可以有许多任务。在Tasks类中,我创建了方法所有者(): 但是当我以前得到用户名的时候 我得到这个异常:未定义的属性:illumb\Database\Eloquent\Relations\BelongsTo::$

  • 嗨,我正在学习laravel。我使用雄辩的ORM删除方法,但我得到了不同的结果。不是真的或假的,而是空的。我设置了一个资源路由,在UsersController中有一个销毁方法。 但是我总是得到一个响应{“status”:“0”,“msg”:“failed”},数据库中的记录被删除。 然后我使用dd($res)。它在页面中显示null。 但是从课程中我学习到它返回一个布尔值true或false。

  • 如何使用雄辩的ORM在Laravel中执行批量数据库插入? 我想在拉威尔完成这一点:https://stackoverflow.com/a/10615821/600516 但是我得到了以下错误。 SQLSTATE[HY093]:无效参数编号:混合命名参数和位置参数。