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

时间:2015-12-07 21:51:25

标签: php laravel composer-php

我试图在我的Laravel应用程序中运行php artisan db:seed,以便它在部署时运行(使用Bamboo。)

它应属于哪个命令?

我目前有:

"post-create-project-cmd": [
    "php artisan key:generate"
    "php artisan db:seed --force"
]

但它不起作用。我想我错过了一些东西,因为似乎没有多少问题。

2 个答案:

答案 0 :(得分:2)

作曲家在这些活动中有hooks to run script

  • install
  • 之前和之后
  • update
  • 之前和之后
  • status
  • 之前和之后
  • archive
  • 之前和之后
  • 转储自动装带器之前和之后
  • create-project
  • 中安装根软件包之后
  • create-project
  • 之后

这些都不适用于您的情况。

只有在从头开始新项目时才应调用{p> create-project。这不是你的问题。您已经有一个有效的项目create-project,如果它已被调用,很久以前,或者您甚至可能已经开始使用composer require laravel/something

post-create-project-cmd是错误的挂钩,你没有在Bamboo中调用composer create-project,是吗?

可能适用的唯一挂钩是在调用composer install时调用的挂钩。但是你不应该为这个命令附加创建一个环境键,因为它总是会被运行 - 这似乎不是一个好主意:

  

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

     

所以它应该已经为你设定了。

     

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

我无法决定每次运行composer install时播种数据库是个好主意,但听起来并不像。

您所拥有的是具有处理项目的作业的Bamboo服务器。您应该将所有需要的脚本添加到Bamboo作业,以初始化可以执行操作的环境 - 例如运行测试,甚至部署到生产环境。但这不是Composer的范围,你不应该试图滥用它来完成这项任务。

部署到生产使用Composer只需一步:抓取依赖关系并创建自动加载器。部署通常会执行更多操作,因此它是一个在适当时调用composer install的脚本。此脚本还应检查是否应该为数据库创建密钥或种子。

答案 1 :(得分:0)

试试这个:

"post-create-project-cmd": [
    "php artisan key:generate"
    "php artisan migrate --seed"
]

您需要在运行种子之前进行迁移(首先创建表格)

"php artisan migrate --seed"将创建表格并运行种子(如果有的话)。

相关问题