Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

cara memesan respons JSON berdasarkan hubungan basis data menggunakan fasih

JSON yang Anda harapkan menampilkan foods sebagai anak dari portions . Untuk melakukan ini, Anda perlu mengatur hubungan ini.

Di Portion . Anda model, Anda perlu mengatur hubungan berikut:

public function foods() {
    return $this->hasMany(Food::class);
}

Dengan pengaturan hubungan ini, Anda sekarang bisa mendapatkan data Anda seperti ini:

$categories = App\FoodGroup::with('portions.foods')->get();

Ini akan memuat kelompok makanan Anda, kemudian memuat porsi ke dalam kelompok makanan, dan kemudian memuat makanan ke dalam porsi.

Sunting

Saya mungkin sedikit salah membaca pertanyaan Anda. Saya berasumsi Anda memiliki portions hubungan didefinisikan pada \App\FoodGroup . Jika tidak, Anda dapat menambahkan ini seperti ini:

Grup Makanan:

public function portions() {
    // the second parameter is the name of the pivot table.
    // in this case, your foods table connects your portions and food groups.
    return $this->belongsToMany(Portion::class, 'foods')->distinct();
}

Edit 2

Solusi ini sedikit meretas karena menangani foods tabel sebagai tabel pivot, meskipun tidak dirancang khusus untuk itu. Karena itu, ada beberapa entri di foods tabel yang berisi nilai pasangan kunci yang sama, dan inilah mengapa Anda mendapatkan model terkait duplikat.

Jika Anda melempar distinct() ke hubungan, ini harus mengatasi masalah, karena akan menghilangkan duplikat yang dibuat dari gabungan bagian dalam. Kode di atas telah diubah.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menyimpan Hasil Kueri dalam variabel menggunakan mysql

  2. Apakah ada cara yang lebih efisien untuk membuat pagination di Hibernate daripada menjalankan kueri pilih dan hitung?

  3. tampilkan nama bulan alih-alih nomor bulan di mysql

  4. Jalankan MySQLDump tanpa Mengunci Tabel

  5. mysql_connect (localhost / 127.0.0.1) lambat pada platform Windows