Skip to content
logo

Kotak Kode Pemograman

Sharing tentang bahasa pemograman

  • WordPress
    • Plugin
  • Tutorial
    • PHP
  • Laravel
  • Tools Webbsite
  • Desain
  • Source Code
  • Web Developer
  • Toggle search form

Update data secara bersamaan di Laravel

Posted on 13/12/202413/12/2024 By kotakkode No Comments on Update data secara bersamaan di Laravel

Untuk menukar posisi di database Laravel secara bersamaan, Anda bisa menggunakan query builder atau Eloquent. Berikut adalah cara untuk melakukannya dengan menggunakan Eloquent. Misalnya, kita memiliki model User dengan kolom name dan position.

  1. Ambil data pengguna yang ingin ditukar:
    Anda perlu mengambil kedua pengguna berdasarkan nama mereka.
  2. Tukar posisi:
    Setelah mengambil data, Anda dapat menukar posisi mereka dan menyimpannya kembali ke database.

Berikut adalah contoh kode:

use App\Models\User;
use Illuminate\Support\Facades\DB;

DB::transaction(function () {
    // Ambil pengguna yang ingin ditukar
    $jono = User::where('name', 'Jono')->first();
    $rudi = User::where('name', 'Rudi')->first();

    // Simpan posisi sementara
    $tempPosition = $jono->position;

    // Tukar posisi
    $jono->position = $rudi->position;
    $rudi->position = $tempPosition;

    // Simpan perubahan
    $jono->save();
    $rudi->save();
});

Dalam kode di atas:

  • Kami menggunakan DB::transaction untuk memastikan bahwa kedua operasi penyimpanan terjadi secara atomik. Jika salah satu gagal, perubahan tidak akan disimpan.
  • Kami mengambil pengguna dengan nama “Jono” dan “Rudi”.
  • Posisi mereka ditukar dan perubahan disimpan kembali ke database.

Pastikan untuk menyesuaikan nama model dan kolom sesuai dengan struktur database Anda.

Berikut Contoh Lain yang berhasil

  public function update(Request $request, Section $section)
    {

        $this->validate($request, [

            'position' => ['required', 'max:10', 'numeric'],
            'action' => ['in:up,down'],
            'name' => ['string', 'unique:sections']
        ]);
        if ($request->action == 'up') {
            // Mencari section berdasarkan posisi yang yang lebih atas
            $sectionAtas = Section::where('position', $request->position - 1)->first();
            $sectionSekarang = $section->name;
            //jika section atas Ada
            if ($sectionAtas) {
                // Menggunakan nama sementara untuk menghindari duplikat
                $namaSectionAtas = $sectionAtas->name; // Nama sementara yang unik
                $namaSementara = 'temp_name_' . uniqid(); // Nama sementara yang unik
                $section->update(['name' => $namaSementara]); // Set nama section saat ini ke nama sementara
                $sectionAtas->update(['name' => $sectionSekarang]); // Set nama section yang ditemukan ke nama section saat ini
                $section->update(['name' => $namaSectionAtas]); // Set nama section saat ini ke nama sementara
            }
            // jika permintaan section turun
        } else if ($request->action == 'down') {
            // Mencari section berdasarkan posisi yang lebih rendah
            $sectionBawah = Section::where('position', $request->position + 1)->first();
            $sectionSekarang = $section->name;

            if ($sectionBawah) {
                // Menggunakan nama sementara untuk menghindari duplikat
                $namaSectionBawah = $sectionBawah->name; // Nama sementara yang unik
                $namaSementara = 'temp_name_' . uniqid(); // Nama sementara yang unik
                $section->update(['name' => $namaSementara]); // Set nama section saat ini ke nama sementara
                $sectionBawah->update(['name' => $sectionSekarang]); // Set nama section yang ditemukan ke nama section saat ini
                $section->update(['name' => $namaSectionBawah]); // Set nama section saat ini ke nama sementara
            }
        } else {
            $section->update(['name' => $request->name]);
        }


        return redirect()->route('admin.section.index')->with('message', 'Section Updated');
    }

Atau dengan cara lain:

switch ($request->action) {
    case 'up':
        // Mencari section berdasarkan posisi yang yang lebih atas
        $sectionAtas = Section::where('position', $request->position - 1)->first();
        $sectionSekarang = $section->name;
        //jika section atas Ada
        if ($sectionAtas) {
            // Menggunakan nama sementara untuk menghindari duplikat
            $namaSectionAtas = $sectionAtas->name; // Nama sementara yang unik
            $namaSementara = 'temp_name_' . uniqid(); // Nama sementara yang unik
            $section->update(['name' => $namaSementara]); // Set nama section saat ini ke nama sementara
            $sectionAtas->update(['name' => $sectionSekarang]); // Set nama section yang ditemukan ke nama section saat ini
            $section->update(['name' => $namaSectionAtas]); // Set nama section saat ini ke nama sementara
        }
        break;
    case 'down':
        // Mencari section berdasarkan posisi yang lebih rendah
        $sectionBawah = Section::where('position', $request->position + 1)->first();
        $sectionSekarang = $section->name;

        if ($sectionBawah) {
            // Menggunakan nama sementara untuk menghindari duplikat
            $namaSectionBawah = $sectionBawah->name; // Nama sementara yang unik
            $namaSementara = 'temp_name_' . uniqid(); // Nama sementara yang unik
            $section->update(['name' => $namaSementara]); // Set nama section saat ini ke nama sementara
            $sectionBawah->update(['name' => $sectionSekarang]); // Set nama section yang ditemukan ke nama section saat ini
            $section->update(['name' => $namaSectionBawah]); // Set nama section saat ini ke nama sementara
        }
        break;
    default:
        $section->update(['name' => $request->name]);
        break;
}

Controller, Laravel

Post navigation

Previous Post: Seeder Laravel gambar langung dari URL
Next Post: Logo BLSNIAGA

Related Posts

Contoh Controller Search multi tabel berelasi di laravel Controller
Merubah isi kolom di semua record di tabel laravel Controller
Login laravel lewat link Laravel
Laravel 403 Forbidden Upload to resfull API Laravel
Cara mencari ID di laravel Controller
Cara install laravel Laravel

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Copyright © 2026 Kotak Kode Pemograman.

Powered by PressBook Grid Blogs theme