使用雄辩用作ORM时,如何记录查询失败的查询?

发布于 2025-02-03 04:32:14 字数 1142 浏览 4 评论 0原文

在使用雄辩作为ORM时,是否可以将数据库中的数据库中的查询失败? 我已经写了一个侦听器来进行日志查询,但是它只会记录成功的查询,并且我会发现失败的查询例外,而没有记录任何内容。 以下是我的听众代码:

$capsule->getConnection()->listen(function ($query) use ($headers) {

$values =array(
            $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'],
            $query->sql,
            json_encode($query->bindings),
            $headers[HeaderKey::USER_ID],
            $headers[HeaderKey::IP_ADDRESS,
            $headers[HeaderKey::SYS_KEY],
            $query->time,
            $query->connection->getDatabaseName(),
            $query->connection->getConfig('username'),
            $query->connection->getConfig('host'),
            );
            $t = "`SysDbLog_" . date('Y-m-d') . "`";
            DB::connection('logdb')
            ->insert("insert DELAYED into $t (page,query,SerializedParam,UserID,IPAddress,SysCode,ExecuteTime,DBName,DBUser, DBHost, WebServer) 
            values (?,?,?,?,?,?,?,?,?,?,INET_ATON(SUBSTRING_INDEX(SUBSTRING_INDEX(USER(), '@', 2), '@', -1)))", $values);
        });
$capsule->bootEloquent();

    return $capsule;}

感谢任何帮助。

Is there a way to log failed queries in the database in Slim when using Eloquent as an ORM?
I have written a listener to log queries, however it only logs successful queries and I get exceptions for failed queries without anything being logged.
Below is my listener code:

$capsule->getConnection()->listen(function ($query) use ($headers) {

$values =array(
            $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'],
            $query->sql,
            json_encode($query->bindings),
            $headers[HeaderKey::USER_ID],
            $headers[HeaderKey::IP_ADDRESS,
            $headers[HeaderKey::SYS_KEY],
            $query->time,
            $query->connection->getDatabaseName(),
            $query->connection->getConfig('username'),
            $query->connection->getConfig('host'),
            );
            $t = "`SysDbLog_" . date('Y-m-d') . "`";
            DB::connection('logdb')
            ->insert("insert DELAYED into $t (page,query,SerializedParam,UserID,IPAddress,SysCode,ExecuteTime,DBName,DBUser, DBHost, WebServer) 
            values (?,?,?,?,?,?,?,?,?,?,INET_ATON(SUBSTRING_INDEX(SUBSTRING_INDEX(USER(), '@', 2), '@', -1)))", $values);
        });
$capsule->bootEloquent();

    return $capsule;}

I would appreciate any help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅忆流年 2025-02-10 04:32:14

您可以使用数据库orm,例如eloquent将Slimphp应用程序连接到数据库。您可以仅使用Loggerinterface。您可以在官方网站中找到更多信息。

https://www.slimframework.com/docs.com/docs/docs/docs/cookbook/数据库-Eloquent.html

You can use a database ORM such as Eloquent to connect your SlimPHP application to a database. You can just working with LoggerInterface. More information you can find in official site.

https://www.slimframework.com/docs/v3/cookbook/database-eloquent.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文