Cara pindah nilai column ke table rujukan (ref table)

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 ditambah column negeri_id.
  • Negeri model telah diwujudkan
  • Table negeri telah diwujudkan dan mempunyai column 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

Post a Comment

Previous Post Next Post