一、我的版本和環境
系統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;
修改之後的兩個地方:
最後再執行
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 協議》,轉載必須註明作者和本文連結