我如何才能正确地对齐数据库之间的php工匠修补器和服务


How can I correctly align the database source between php artisan tinker and serve

我是laravel的新手,我正在学习laracast教程,一切都很好,除了我必须不断地通过DB_DATABASE=选项在我的.env文件中切换我的数据库源。

  • 当我使用php artisan serve时,必须将数据库连接设置为DB_DATABASE=../database/database.sqlite。如果不这样做,将导致php错误消息:InvalidArgumentException: Database (database/database.sqlite) does not exist.
  • 当我想使用php artisan tinker时,我必须将其更改为DB_DATABASE=database/database.sqlite。不这样做将导致命令行错误:InvalidArgumentException with message 'Database (../database/database.sqlite) does not exist.'

我怎样才能纠正这一点,使我不必不断地来回切换?

您可以在config/database.php中直接指定,而不是在.env中:

'database' => database_path('database.sqlite')

如果这不起作用,你也可以选择:

'database' => empty(request()->server->get('HTTP_HOST')) ? 'database/database.sqlite' : '../database/database.sqlite'

这里发生的事情是,在php cli HTTP_HOST是不可用的,所以如果它是空的,那么这意味着你正在使用tinker,而不是php的内置服务器。