如何正确对齐 php artisan tinker 和 serve 之间的数据库源
How can I correctly align the database source between php artisan tinker and serve
我是 laravel 的新手,我正在学习 laracast 教程,一切都很好,除了我必须通过 [=12] 在我的 .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 的内置服务器.
我是 laravel 的新手,我正在学习 laracast 教程,一切都很好,除了我必须通过 [=12] 在我的 .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 的内置服务器.