Хорошо. Я пошел вперед и попробовал это. Если вы отключите QueryLog () до того, как сохраните запросы, у вас получится.
Вот мое промежуточное ПО, на случай, если вы окажетесь здесь и захотите узнать, как это сделать:
<?php
namespace App\Http\Middleware;
use Closure;
use DB;
use App\Models\DBupdate; // where I store the sqlquery
class BeforeAnyDbQueryMiddleware
{
public function handle($request, Closure $next)
{
DB::enableQueryLog();
return $next($request);
}
public function terminate($request, $response)
{
// Store or dump the log data...
$onlyTheseTables = '.products.chains.chainproducts.stores.principals.';
$logs = DB::getQueryLog();
DB::disableQueryLog();
foreach ($logs as $l) {
$q = $l['query'];
if (!(strpos('+INSERTUPDATEDELETE',strtoupper(substr($q,0,6)))===false)) { // insert, update, delete only
$px = explode('`',$q);
if (!(strpos($onlyTheseTables,$px[1])===false)) { // only these tables
$b = $l['bindings'];
$needle='?';
foreach ($b as $param){
$pos = strpos($q, $needle);
if ($pos !== false) {
$q = substr_replace($q, ((is_numeric($param))?$param:"'".$param."'"), $pos, strlen($needle));
}
} //foreach
$u = new DBupdate;
$u->sqlquery=$q;
$u->save();
}
}
} // foreach
}
}
Это будет хранить только запросы INSERT, UPDATE и DELETE для таблиц, перечисленных в $ onlyTheseTables в таблице базы данных 'dbupdates`. Также восстанавливает привязки.