Jika table user anda mempunyai column negeri yang pada asalnya menyimpan data sebagai DataType String, tetapi anda ingin mengasingkan data negeri dari table user kepada table baru ref_negeri supaya anda lebih mudah untuk mengawal data berkenaan.
Antara pilihan yang ada ialah dengan menggunakan fungsi laravel migration. Fungsi migration bukan sahaja untuk kegunaan membina struktur table malah lebih dari itu. Berikut adalah contoh mudah untuk mengasingkan column ke table rujukan baru.
Pertamanya, jalankan command migration
php artisan make:migration negeri_to_ref_table --table=users
latar belakang kes ini:
- User model telah diwujudkan. Table user mempunyai column asal
negeri
, dan ditambahcolumn negeri_id
. Negeri model
telah diwujudkan- Table
negeri
telah diwujudkan dan mempunyaicolumn id & nama
Masukkan kod berikut pada method up()
.
public function up(){ $negeriArr = []; foreach (User::all() as $user) { if (!array_key_exists($user->negeri, $negeriArr)) { $negeri = Negeri::create(['name' => $user->negeri]); $negeriArr[$user->negeri] = $negeri->id; } } foreach ($negeriArr as $negeriName => $negeriId) { User::where('negeri', $negeriName)->update(['negeri_id' => $negeriId]); }}
Amaran: Pastikan anda telah membuat backup database
Pastikan anda menamakan entiti mengikut table & column anda dan kemudian jalankan comand berikut:
php artisan migrate
Anda boleh merujuk Post ini untuk Pindah nilai column ke table rujukan (ref table) secara bulk
Jika anda menemui sebarang kesalahan pada kod yang diberi atau anda ingin berkongsi, jangan lupa komen dibawah