Cara mendapatkan data dari 3 relasi di laravel

From DocsMaulana

Untuk mendapatkan data foreign key dari tiga tabel yang terhubung melalui relasi, kamu dapat menggunakan Eloquent untuk mengakses relasi-relasinya. Misalnya, jika kamu memiliki tiga tabel yang terhubung: table_a, table_b, dan table_c, dan ada relasi antara mereka, contohnya table_a terhubung ke table_b melalui foreign_key_ab, dan table_b terhubung ke table_c melalui foreign_key_bc, maka kamu bisa mengakses data foreign key dari ketiga tabel tersebut sebagai berikut:

// Misalnya, ada sebuah model untuk setiap tabel

class TableA extends Model {

    public function tableB() {

        return $this->belongsTo(TableB::class, 'foreign_key_ab');

    }

}

class TableB extends Model {

    public function tableA() {

        return $this->hasOne(TableA::class, 'foreign_key_ab');

    }

    public function tableC() {

        return $this->belongsTo(TableC::class, 'foreign_key_bc');

    }

}

class TableC extends Model {

    public function tableB() {

        return $this->hasOne(TableB::class, 'foreign_key_bc');

    }

}

// Kemudian untuk mengambil data foreign key dari ketiga tabel tersebut

$tableAData = TableA::with('tableB.tableC')->find($id); // $id adalah ID dari data di TableA

// Sekarang kamu punya akses ke data dari ketiga tabel tersebut

$tableBData = $tableAData->tableB; // Data dari TableB

$tableCData = $tableBData->tableC; // Data dari TableC

Dalam contoh di atas, with('tableB.tableC') memberitahu Eloquent untuk mengambil data dari tableB dan juga mengaitkannya dengan data dari tableC melalui relasi yang sudah didefinisikan di model.

Pastikan untuk menyesuaikan nama model, nama relasi, dan foreign key yang sesuai dengan struktur database kamu.