lumen安裝orangehill/iseed遇到的問題

tal_yang發表於2020-09-16

一、我的版本和環境

系統win10 , 環境:整合環境phpstudy lumen: (7.2.1) (Laravel Components ^7.0)

二、起因

使用lumen協作開發,本地環境的測試資料最好是生成一個seed檔案然後就可以讓同事一起使用測試資料開發了,不用再用手填寫測試資料。

三、遇到的問題

使用lumen開發當然是,先新增安裝composer包了。

我們在這裡使用 orangehill/iseed

安裝命令:

composer require orangehill/iseed

安裝完成之後測試下:

執行:php artisan iseed users 我這裡使用了users表做測試

結果顯示:

Command "iseed" is not defined.

解決方法,註冊引入 Orangehill\Iseed 包。

我的在 bootstrap/app.php 檔案中新增

$app->register(Orangehill\Iseed\IseedServiceProvider::class);

然後再執行

執行:php artisan iseed users

顯示:

Call to undefined method Laravel\Lumen\Application::booting()

找到這個方法:

在vendor/orangehill/iseed/src/Orangehill/Iseed/IseedServiceProvider.php的register()方法中。
改動如下:
public function register()
{
 $this->registerResources();
​
 $this->app->singleton('iseed', function($app) {
 return new Iseed;
 });
 //        var_dump(method_exists ($this->app,'boot'));die;
 $this->app->boot(function() { // todo 將booting改成boot即可
 $loader = \Illuminate\Foundation\AliasLoader::getInstance();
 $loader->alias('Iseed', 'Orangehill\Iseed\Facades\Iseed');
 });
​
 $this->app->singleton('command.iseed', function($app) {
 return new IseedCommand;
 });
​
 $this->commands('command.iseed');
}

再執行命令

執行:php artisan iseed users

結果顯示:

In IseedCommand.php line 163:

Class 'Config' not found

In IseedCommand.php line 96:

Class 'File' not found

解決方式:

檔案位置:vendor/orangehill/iseed/src/Orangehill/Iseed/IseedCommand.php
注意:用到這兩個類的地方需要將他前面的 「 \ 」 去掉。

將類正確引入即可。我這裡引入的兩個類分別是。

use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\File;

修改之後的兩個地方:

lumen安裝orangehill/iseed遇到的問題

lumen安裝orangehill/iseed遇到的問題

最後再執行

php artisan iseed users

  • 成功

顯示:

php artisan iseed users
​
 File UsersTableSeeder.php already exist. Do you wish to override it? [yes|no] (yes/no) [no]:
 > yes
​
Created a seed file from table users
​

結束

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章