1.开始吧。
- HTTP要求。
1.执行SQL查询。 - HTTP响应。
我想得到请求和响应之间的查询(多少个查询和原始SQL查询)。->getLastQuery()
只返回最后一个查询。我希望保存发送HTTP请求和接收HTTP响应之间的所有查询。
我失败的例子;
<?php
class Logger implements FilterInterface
{
use ResponseTrait;
public function before(RequestInterface $request, $arguments = null)
{
}
public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
{
$this->db = \Config\Database::connect();
$this->db->getLastQuery()->getOriginalQuery();
if ($this->db->getLastQuery()->isWriteType()) {
echo "updated or write query";
}
$return = $this->db->getLastQuery()->getOriginalQuery();
$logger = new Client();
$logger->logQueries($return);
}
}
1条答案
按热度按时间gjmwrych1#
说明
尝试使用调试工具栏。* 调试工具栏提供有关当前页请求的概览信息,包括基准测试结果、已运行的查询、请求和响应数据等。*
或者,您可以通过订阅
DBQuery
事件来执行应用程序,这可以通过向app/Config/Events.php
类注册来完成,以便让它知道您希望在触发该事件时执行某个操作。定义事件
大多数事件在
app/Config/Events.php
文件中定义。您可以使用Events
类的on()
方法为事件订阅操作。第一个参数是要订阅的事件的名称。第二个参数是将在触发该事件时运行的可调用对象:在这个例子中,每当pre_system事件被执行时,就会创建一个
MyClass
的示例并运行myFunction()
方法。注意,第二个参数可以是PHP能够识别的任何形式的callable:溶液
在您的
app/Config/Events.php
课程中,订阅DBQuery
事件。DBQuery
-----:在数据库查询成功与否后调用。接收\CodeIgniter\Database\Query
对象。* -事件点