目前,我正在尝试使用以下工作流程开发包更新系统。 我正在使用以下文件创建一个包(.zip):
作为管理员,我可以在管理控制台中上传此软件包以更新我的数据库。
后端工作流程:
所以,你可以看到我的播种有些麻烦。
首先,我尝试将(种子Storage::move()
)种子从包种子文件夹移动到database/seed/
目录。
我尝试使用Artisan::call('db:seed','--class']);
播种,但出现Class MyClass does not exist
错误。
我猜我的自动加载器有一些问题,所以我试图用system('composer dump-autoload', $test);
转储它。 $test
的输出为1
,但autoload_classmap
未更新。
现在我添加了一个UpdateInstructionSeeder.php
,默认情况下我的框架中可用它来修复自动加载器问题。
上传我的软件包后,我现在使用Storage::get()
和Storage::put()
来更新我需要的种子。
然后我添加Artisan::call('make:seeder', ['name' => $className]);
种子($ className是我的种子名称),并使用Storage::get()
和Storage::put()
更新种子。
最后我用Artisan::call('db:seed','--class' => 'UpdateInstructionSeeder']);
给我的播种机打电话。结果:
Class MyClass does not exist
内容:
包UpdateInstructionSeeder
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class UpdateInstructionSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Model::unguard();
$this->call(DemoTableSeeder::class);
Model::reguard();
}
}
包DemoTableSeeder
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class DemoTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Model::unguard();
DB::table('demos')->insert([
[
'demoInt' => 1,
'demoString' => "a"
],
[
'demoInt' => 11,
'demoString' => "aa"
],
]);
Model::reguard();
}
}
我现在浪费了很多时间,而且我完全不知道以编程方式解决这个问题。
答案 0 :(得分:1)
尝试
php artisan optimize
php artisan cache:clear
chmod -R guo+w storage
composer dump-autoload
然后终于
php artisan db:seed
您可以使用Artisan :: call(如下所示)以编程方式调用所有这些命令
Artisan::call('optimize', ['--quiet' => true, '--force' => true]);
修改
制作一个包含以下内容的.sh
文件并使用php
optimize.sh
php artisan optimize
php artisan cache:clear
chmod -R guo+w storage
composer dump-autoload