Laravel 使用artisan并在服务提供程序中实例化对象时没有查询结果错误

Laravel 使用artisan并在服务提供程序中实例化对象时没有查询结果错误,laravel,Laravel,我已经创建了一个提供类App\Path的服务提供商。这是通过使用$request->getPathInfo()通过雄辩加载的 该应用程序运行良好,符合预期。但是,当我想使用Artisan时,会出现以下错误: In Builder.php line 369: No query results for model [App\Path] / 这使我无法清除缓存、创建模型等。似乎Laravel在运行任何artisan命令时都会运行register(),完成此操作后,请求路径为“/”,这在数据库中不存在

我已经创建了一个提供类App\Path的服务提供商。这是通过使用$request->getPathInfo()通过雄辩加载的

该应用程序运行良好,符合预期。但是,当我想使用Artisan时,会出现以下错误:

In Builder.php line 369:
No query results for model [App\Path] /

这使我无法清除缓存、创建模型等。似乎Laravel在运行任何artisan命令时都会运行register(),完成此操作后,请求路径为“/”,这在数据库中不存在。是否有更好的方法填充路径对象?解决这个问题的唯一方法似乎是为“/”添加一个虚拟记录

您可以检查应用程序是否正在从控制台运行,并调整其逻辑,例如:

$this->app->singleton(路径::类,函数($app)
{
如果($app->runningincole()){
返回null;
}
$request=$app->make(\illumb\Http\request::class);
$path=path::with(['template','parts'])->findOrFail($request->getPathInfo());
返回$path;
});

您可以检查应用程序是否正在从控制台运行,并调整其逻辑,例如:

$this->app->singleton(路径::类,函数($app)
{
如果($app->runningincole()){
返回null;
}
$request=$app->make(\illumb\Http\request::class);
$path=path::with(['template','parts'])->findOrFail($request->getPathInfo());
返回$path;
});

完美。非常感谢。这经常被用来阻止这种事情的发生吗?对于为什么调用它以及为什么请求路径是“/”@Zakalwe是的,Laravel创建了所有的服务提供者,甚至是控制台运行,所以就这样。请求路径是
/
,因为它是它的默认值。作为不同的方法,您可以创建一个“延迟”的服务提供者,因此它不会每次都被加载,而是只在需要时加载()延迟似乎是一个更好的主意,因为对象只在运行时才需要。这消除了对
runningInCole()
调用的需求,因此感觉更整洁。完美。非常感谢。这经常被用来阻止这种事情的发生吗?对于为什么调用它以及为什么请求路径是“/”@Zakalwe是的,Laravel创建了所有的服务提供者,甚至是控制台运行,所以就这样。请求路径是
/
,因为它是它的默认值。作为不同的方法,您可以创建一个“延迟”的服务提供者,因此它不会每次都被加载,而是只在需要时加载()延迟似乎是一个更好的主意,因为对象只在运行时才需要。这消除了对
runningInCole()
调用的需求,因此感觉更整洁。
In Builder.php line 369:
No query results for model [App\Path] /