Saya memiliki tabel berikut dalam database:

Users: id|name|age Hobbies: id|user_id|hobby

Dalam sekuel saya memiliki asosiasi berikut:

Users.hasMany(Hobbies) Hobbies.belongTo(Users)

Untuk mengambil daftar pengguna beserta hobinya, kuerinya adalah sebagai berikut:

Users.findAll(include: [{model: Hobbies}])

Saya memetakan hasil kueri ke objek domain.

Hasil kueri terlihat seperti ini:

[{id: 1, name: 'John', age: 20, hobbies: ['fishing', 'running']}]

Saya mencoba mengembalikan daftar pengguna yang memiliki hobi memancing.

Seperti yang saya pahami, saya dapat menerapkan kueri tempat pada asosiasi itu sendiri seperti ini:

Users.findAll(include: [{model: Hobbies, where: {hobby: 'fishing'}}])

Tapi ini tetap akan mengembalikan semua pengguna, dan hanya akan mengembalikan hobi untuk setiap pengguna yang memancing.

Apakah ada cara untuk menerapkan kueri tempat di tingkat pengguna berdasarkan hobi mereka?

-1
Niall McKenna 10 Maret 2020, 02:18

1 menjawab

Jawaban Terbaik

Saya pikir Anda perlu mengubah jenis bergabung. Sekuel secara default menggunakan gabungan luar kiri saat menggabungkan dua model tetapi jika Anda mengubahnya menjadi gabungan dalam dengan menyetel required ke true Anda akan mendapatkan hasil yang diinginkan -

Users.findAll(include: [{model: Hobbies, where: {hobby: 'fishing'}, required : true}])

Saya harap ini membantu!

1
Soham Lawar 10 Maret 2020, 05:46