【发布时间】:2020-10-30 21:32:58
【问题描述】:
我为我们的 API 创建了一个JSON search engine。
组装查询的逻辑如下;
Laravel 宏用于在 Eloquent 模型上启用搜索方法,该模型创建类的实例并运行搜索方法:
/**
* @var $this Builder
*/
$searcher = new Searcher($this, $request);
$searcher->search();
为了保持分离,具有 URL 查询逻辑的请求参数类是动态实例化的,并且具有与依赖项相同的查询构建器。在 foreach 循环中执行以下操作:
new $parameter($this->request, $this->builder, $this->modelConfig);
为了查看实际搜索到的内容,我设置了日志以编写实际查询和绑定
Log::info('[Search] SQL: ' . $this->builder->toSql() . " Bindings: " . implode(', ', $this->builder->getBindings()));
现在我遇到的问题是,在加载相关模型时(在请求参数之一 (RelationsParameter) 中使用 ->with(),我确实得到了我所要求的,因此模型与传递给的关系一起加载但是,它永远不会反映在查询中。
我将始终以SELECT * FROM table WHERE something 结尾,而无需提及相关表。有没有办法获取底层查询?
【问题讨论】:
标签: php laravel eloquent laravel-query-builder laravel-7