Laravel Hubungan Fasih: Panduan Lengkap – Codewithaden

Fasih membuat mengelola dan bekerja dengan hubungan ini lancar dan mendukung beberapa jenis hubungan:

Jika Anda ingin mempelajari lebih lanjut tentang Laravel, lihat tautan berikut.

Hubungan Laravel fasih

Hubungan yang fasih dalam Laravel didefinisikan sebagai metode pada kelas model Anda yang fasih. Ini seperti model yang fasih sendiri; Hubungan juga berfungsi sebagai pembangun kueri penting, mewakili hubungan sebagai metode memberikan metode rantai dan permintaan metode yang kuat.

Langkah 1: Konfigurasikan Proyek Laravel

Instal dengan perintah berikut.

composer create-project laravel/laravel --prefer-dist Relationships 

Siapkan database MySQL.

Sekarang, edit file .env.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=relationship
DB_USERNAME=root
DB_PASSWORD=mysql 

Sekarang, kita perlu membuat tiga tabel untuk membangun hubungan di antara mereka.

  1. Tabel pesanan
  2. Tabel Item
  3. Tabel faktur
php artisan make:migration create_items_table
php artisan make:migration create_orders_table
php artisan make:migration create_invoice_table 

Tentukan Skema dari tabel ini.

increments('id');
            $table->string('item_name');
            $table->integer('price');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('items');
    }
} 
increments('id');
            $table->integer('user_id');
            $table->integer('item_id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('orders');
    }
} 
increments('id');
            $table->integer('user_id');
            $table->integer('order_id');
            $table->integer('paid_amount');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('invoice');
    }
} 

Selanjutnya, ketik perintah berikut.

php artisan migrate
 

Ini akan membuat semua lima tabel dalam database.

Langkah 2: Isi data dummy ke dalam database.

Ketik perintah berikut untuk menghasilkan file seed.

php artisan make:seeder UsersTableSeeder
php artisan make:seeder ItemsTableSeeder
php artisan make:seeder OrdersTableSeeder
php artisan make:seeder InvoiceTableSeeder 

Beri makan tabel ini dengan nilai -nilai.

insert([
            'name' => str_random(10),
            'email' => str_random(10).'@gmail.com',
            'password' => bcrypt('secret'),
        ]);
          DB::table('users')->insert([
            'name' => str_random(10),
            'email' => str_random(10).'@gmail.com',
            'password' => bcrypt('secret'),
        ]);
           DB::table('users')->insert([
            'name' => str_random(10),
            'email' => str_random(10).'@gmail.com',
            'password' => bcrypt('secret'),
        ]);
            DB::table('users')->insert([
            'name' => str_random(10),
            'email' => str_random(10).'@gmail.com',
            'password' => bcrypt('secret'),
        ]);
             DB::table('users')->insert([
            'name' => str_random(10),
            'email' => str_random(10).'@gmail.com',
            'password' => bcrypt('secret'),
        ]);
    }
} 
insert([
            'item_name' => 'mobile',
            'price' => 1000
        ]);
         DB::table('items')->insert([
            'item_name' => 'laptop',
            'price' => 2000
        ]);
          DB::table('items')->insert([
            'item_name' => 'camera',
            'price' => 500
        ]);
           DB::table('items')->insert([
            'item_name' => 'ipod',
            'price' => 200
        ]);
            DB::table('items')->insert([
            'item_name' => 'tabs',
            'price' => 800
        ]);
    }
}
 
insert([
            'user_id' => 1,
            'order_id' => 1,
            'paid_amount' => 1000
        ]);
         DB::table('invoice')->insert([
            'user_id' => 3,
            'order_id' => 2,
            'paid_amount' => 4000
        ]);
          DB::table('invoice')->insert([
            'user_id' => 4,
            'order_id' => 4,
            'paid_amount' => 1000
        ]);
           DB::table('invoice')->insert([
            'user_id' => 5,
            'order_id' => 5,
            'paid_amount' => 1000
        ]);
            DB::table('invoice')->insert([
            'user_id' => 2,
            'order_id' => 3,
            'paid_amount' => 1000
        ]);
    }
}
 
insert([
            'user_id' => 1,
            'item_id' => 1
        ]);
        DB::table('orders')->insert([
            'user_id' => 1,
            'item_id' => 5
        ]);
        DB::table('orders')->insert([
            'user_id' => 2,
            'item_id' => 2
        ]);
        DB::table('orders')->insert([
            'user_id' => 4,
            'item_id' => 3
        ]);
        DB::table('orders')->insert([
            'user_id' => 5,
            'item_id' => 1
        ]);
    }
} 

Sekarang, akhirnya, panggil semua kelas ini di Databaseseeder.php mengajukan.

call(UsersTableSeeder::class);
        $this->call(OrdersTableSeeder::class);
        $this->call(ItemsTableSeeder::class);
        $this->call(InvoiceTableSeeder::class);
    }
} 

Jadi, itu mengisi nilai -nilai yang dijelaskan dalam kueri.

Langkah 3: Buat model untuk ketiga tabel baru ini.

Ketik perintah berikut.

php artisan make:model Item
php artisan make:model Order
php artisan make:model Invoice 

Satu untuk Banyak hubungan

SEBUAH ” satu-ke-banyak ”Hubungan umumnya digunakan untuk mendefinisikan hubungan di mana model tunggal atau satu memiliki model lain.

Dalam contoh kami, Pengguna dapat memiliki banyak Pesanan

Jadi, di Pengguna Model, kita dapat menulis fungsi -fungsi berikut.

hasMany(Order::class);
    }
} 

Sekarang, buka terminal dan ketik perintah berikut.

php artisan tinker 

Ketik kode berikut di dalamnya.

$orders = App\User::find(1)->orders; 

Jadi, itu akan menampilkan pesanan yang user_idnya 1

Illuminate\Database\Eloquent\Collection {#734
     all: [
       App\Order {#738
         id: 1,
         user_id: 1,
         item_id: 1,
         created_at: null,
         updated_at: null,
       },
       App\Order {#741
         id: 2,
         user_id: 1,
         item_id: 5,
         created_at: null,
         updated_at: null,
       },
     ],
   }
 

Jika kunci utama lokal meja Anda berbeda, Indo dan kunci asing berbeda dari identitas pengguna. Kemudian, Anda perlu menentukan argumen lebih lanjut seperti ini.

hasMany('App\Order', 'foreign_key', 'local_key');
} 

Satu ke banyak (terbalik)

Sekarang kita dapat mengakses pengguna yang telah memesan.

Jadi, di Order.php model, masukkan fungsi berikut di dalamnya.

belongsTo(User::class);
    }
} 

Pergi ke Tinker dan ketik kode berikut di dalamnya.

 $user = App\Order::find(2)->user; 

Ini akan mencantumkan output seperti yang berikut.

App\User {#735
 id: 1,
 name: "kbXBRnz9no",
 email: "9WQ1CwXjZY@gmail.com",
 created_at: null,
 updated_at: null,
 } 

Jadi, kita dapat menemukan Pengguna yang telah menempatkan Memesan

Akhirnya, artikel pertama kami tentang Satu untuk Banyak Hubungan sudah berakhir.

Tutorial hubungan lain akan diterbitkan di artikel berikutnya.

Jika Anda memiliki pertanyaan tentang Hubungan Laravel fasih Tanyakan pada komentar di bawah ini.

Artikel ini berasal dari website Winpoin, dan kemudian diterjemahkan ke bahasa indonesia, baca artikel asli disini

Leave a Reply

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