Laravel menghitung hubungan hubungan [duplikat]

Saya mencoba menghitung jumlah baris dalam suatu hubungan yang merupakan hubungan via di tabel utama. Totalnya aku punya 3 meja..

Survei:

| id |

Pertanyaan:

| id | survey_id |

Tanggapan:

| id | question_id |

Saya mencoba mendapatkan jumlah total di tabel tanggapan dari tabel survei. Saya sudah mengatur semua hubungan tetapi sepertinya saya tidak bisa menghitung totalnya.

Saya telah mencoba melakukan ->withCount('questions.responses') tetapi ini menghasilkan kesalahan 500. Saya tahu saya dapat mengulanginya tetapi tidak tahu apakah ada cara yang lebih efisien untuk melakukannya dalam Eloquent.


person Community    schedule 05.03.2019    source sumber
comment
Anda memiliki hubungan HasManyThrough yang ditentukan?   -  person Piazzi    schedule 05.03.2019
comment
Bahkan tidak memikirkan hal ini, bisakah Anda menambahkan jawaban sehingga saya dapat menerimanya   -  person    schedule 05.03.2019


Jawaban (1)


Anda dapat mencapainya menggunakan hubungan Memiliki Banyak Melalui.

Dalam model Anda:

/* Survey.php */

public function responses()
{
    return $this->hasManyThrough(Response::class, Question::class);
}

Kemudian di pengontrol Anda:

/* SurveyController.php */

public function index()
{
    // Get your surveys with your desired attribute:
    $surveys = Survey::withCount('responses')->get();

    return view('my_cool_view')->withSurveys($surveys);
}
person Piazzi    schedule 05.03.2019
comment
Saya harap Anda tidak keberatan saya memperbarui pertanyaan Anda. Saya menjawab saat Anda memposting milik Anda, dan mengingat Anda menyarankan pendekatan ini, menurut saya ini adalah hal yang benar untuk dilakukan daripada mempostingnya sendiri. Anda bebas untuk membatalkan ini jika Anda mau. Semoga harimu menyenangkan. - person Kenny Horna; 05.03.2019
comment
Terima kasih atas editannya, kawan. Saya tidak keberatan sama sekali, semoga harimu menyenangkan :) - person Piazzi; 05.03.2019