我应该在composer.json中将php artisan seed命令放在哪里?

我应该在composer.json中将php artisan seed命令放在哪里?,php,laravel,composer-php,Php,Laravel,Composer Php,我正在尝试在我的Laravel应用程序中运行phpArtisanDB:seed,以便它在部署时运行(使用竹子) 它应该服从哪个命令 我目前有: "post-create-project-cmd": [ "php artisan key:generate" "php artisan db:seed --force" ] 但它不起作用。我想我遗漏了一些东西,因为关于这一点似乎没有太多问题。试试这个: "post-create-project-cmd": [ "php art

我正在尝试在我的Laravel应用程序中运行
phpArtisanDB:seed
,以便它在部署时运行(使用竹子)

它应该服从哪个命令

我目前有:

"post-create-project-cmd": [
    "php artisan key:generate"
    "php artisan db:seed --force"
]
但它不起作用。我想我遗漏了一些东西,因为关于这一点似乎没有太多问题。

试试这个:

"post-create-project-cmd": [
    "php artisan key:generate"
    "php artisan migrate --seed"
]
您需要在运行种子之前进行迁移(首先创建表)

“php artisan migrate--seed”
将装箱表格并运行种子(如果有的话)。

Composer在这些事件中:

  • 安装前后
    安装
  • 更新前后
    更新
  • 前后
    状态
  • 存档前后
  • 卸载自动加载器之前和之后
  • 创建项目中安装根包后
  • 创建项目之后
这些都不适用于你的情况

create project
只能在从头开始新项目时调用。对于你的问题,这不太可能。您已经有了一个正在工作的项目,
create project
,如果它被调用的话,它是很久以前的事了,或者您甚至可能是从
composer require laravel/something
开始的

post create project cmd是错误的钩子,您不是在用竹子调用
composer create project
,是吗

唯一可以应用的挂钩是在调用
composer install
时调用的挂钩。但您不应该将创建环境键附加到此命令,因为它将始终运行—这似乎不是一个好主意:

首次创建Laravel应用程序时,会自动调用key:generate

所以它应该已经为您设置好了

如果通过再次执行该命令来更改密码,请注意使用Hash::make()保存的密码将不再有效

我无法决定是否每次运行
composer安装时对数据库进行种子设定是一个好主意,但听起来似乎不是这样

你所拥有的是一个负责处理你的项目的竹服务器。您应该将所需的每个脚本添加到竹作业中,以初始化一个环境,您可以在其中执行一些操作,例如运行测试,甚至部署到生产环境。但这不属于Composer的范围,您不应该尝试将其用于此任务


部署到生产环境使用Composer完成一个步骤:获取依赖项并创建自动加载器。部署通常做更多的事情,因此它是一个脚本,在适当的时候调用
composer install
。此脚本还应检查是否应创建密钥或为数据库种子。

我本以为这肯定会起作用,但它没有起作用。我确实需要migrate命令,但没有使用任何命令。我尝试了您的方法,并结合使用了
“php artisan migrate--force”
“php artisan db:seed--force”
,但都没有成功。非常感谢您给出了完整的答案。我知道我错过了一些重要的事情。我不是安排竹子工作的人,这没用。我必须找出如何将seed命令添加到该作业中。