【问题标题】:Laravel query logging missing update queriesLaravel 查询记录丢失的更新查询
【发布时间】:2019-01-28 16:55:12
【问题描述】:

我在控制器中有这段代码(Laravel 5.6):

\DB::enableQueryLog();
$foo->update($data);
dd(\DB::getQueryLog());

问题是转储中没有update 查询。我知道update 命令正在运行(我可以在数据库中看到更新的数据)。我错过了什么?

【问题讨论】:

  • 什么是 $foo? $data 是否包含不同的数据?如果 $foo 是一个模型并且 $data 没有任何更改,那么 update() 将不会实际运行查询。
  • 您使用的是 Eloquent 还是 Query Builder?
  • $foo 是一个模型,$data 包含不同的数据。前后查看,我看到更新已经奏效。但是没有任何东西被丢弃。
  • @ChukwuemekaInya 雄辩
  • 您是否使用多个数据库连接?

标签: php mysql laravel logging eloquent


【解决方案1】:

你可能会有更好的运气:

\DB::connection()->enableQueryLog();
$foo->update($data);
dd(\DB::getQueryLog());

个人选择,但我什至会稍微修改一下:

\DB::connection()->enableQueryLog();
$foo->update($data);
print_r(\DB::getQueryLog());
die();

您可能更喜欢输出。

【讨论】:

  • 谢谢,但这没什么区别。
【解决方案2】:

尝试查询生成器:

DB::connection()->enableQueryLog();
DB::connection('your-connection')->update($data);
$queries = DB::getQueryLog();
dd($queries);

如果这不起作用,您可能需要检查this

【讨论】:

  • Eloquent 在幕后做了一些工作,所以很遗憾我不能使用 Query Builder。 Laravel DebugBar 也没有显示update 查询。
  • 我理解您对 Eloquent 的喜爱。您可以出于调试目的尝试其他事情。至少这将有助于排除某些变量并缩小可能的原因。
  • 我们可以看看你的 dd() 产生了什么吗?
  • 你当然是对的。我会尝试一下,稍后再给你回复结果(现在没有时间)。 dd() 什么也没产生。
  • 好的,伙计。待命。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-22
  • 2017-03-08
  • 1970-01-01
  • 2013-10-08
  • 1970-01-01
相关资源
最近更新 更多