Saya sedang membangunkan aplikasi blog dalam Laravel 8.
Saya sedang bersiap untuk menggunakan ia pada pelayan langsung, dan saya mahu proses penempatan menjadi sangat mesra pengguna.
Untuk melakukan ini, saya telah membangunkan "pemasang" untuk aplikasi:
Dalam routesweb.php
Saya ada:
Route::get('/install', [InstallController::class, 'index']);
Dalam appHttpControllersInstallController.php
Saya mempunyai kod ini untuk menjalankan migrasi jika tiada pengguna jadual:
class InstallController extends Controller { public function index() { if (!Schema::hasTable('users')) { Artisan::call('migrate'); } return redirect('/register')->with('success', 'Way to go! You can create an account.'); } }
Kod di atas berfungsi, semua jadual dibuat dan pengguna (pertama) dijemput untuk mendaftar.
Masalahnya ialah saya tidak menemui cara untuk meminta pengawal menjalankan pembiakan pangkalan data selepas berjaya mencipta jadual.
Anda boleh melakukan ini dengan berlari
php artisan db:seed
或通过Artisan
外观来完成此操作,例如Artisan::call('db:seed');
Kod anda ialah:
Sumber: https://laravel.com/docs/9.x/seeding#running-seeder
Walau bagaimanapun, saya mengesyorkan agar anda tidak menggunakan laluan ini dan sebaliknya mencipta skrip penggunaan yang akan melakukan semua ini untuk anda. Oleh itu, anda mendedahkan laluan ini kepada semua pengguna yang akan menggunakan aplikasi dan pengguna berniat jahat boleh mengeksploitasinya.