我知道我可以从查询日志中获取原始查询,粘贴所有绑定的变量(也在查询日志中找到),在查询的前面打一个explain
,然后直接在mysql控制台中运行以获得查询的解释。...但是有没有更快的方法来获得解释?
理想情况下,我想做这样的事情:
$query = User::where("favorite_color", "blue");
dd($query->explain());
(显然,实际查询将更加复杂并且具有一些联接)
我尝试像这样添加explain
:
$query->selectRaw("explain select user.*");
但是这导致查询开始于:
select explain select...
...这只是无效的sql。
我想您可以使用fromQuery
方法,在其中根据documentation传递原始sql和绑定。>
/**
* Create a collection of models from a raw query.
*
* @param string $query
* @param array $bindings
* @return \Illuminate\Database\Eloquent\Collection
*/
public function fromQuery($query, $bindings = [])
{
return $this->hydrate(
$this->query->getConnection()->select($query, $bindings)
);
}