Kaedah Laravel Eloquent hanya mengembalikan tatasusunan rekod pertama dalam pangkalan data
P粉966979765
P粉966979765 2024-01-03 10:53:43
0
2
498

Saya ada kod ini:

$subOffers = SubOffer::get()->where('offers_id', 1);

Apabila saya mengembalikan $subOffers saya mendapat tatasusunan seperti ini.

[{"id":1,"offers_id":"1","price":"123.0","start_date":"2022-07-23","stop_date":"2022-07-24","additional_info":"r832ufr803yw98fhew98f8h93wq"}]

Tapi bila dah tukar 1 ke 2 atau 3 atau 4 atau... saya dapat objek macam ni.

{"3":{"id":4,"offers_id":"4","price":"12,341","start_date":"2022-07-10","stop_date":"2022-07-13","additional_info":null}}

Dalam kes ini saya menukarnya kepada 4 dan mendapat kunci n-1.

Apa yang sedang berlaku? Mengapa saya menerima objek dan bukannya tatasusunan? Ini berlaku apabila Offers_id lebih besar daripada 1. Offers_id ialah kunci asing.

P粉966979765
P粉966979765

membalas semua(2)
P粉136356287

Baiklah, saya jumpa penyelesaiannya

$subOffers = SubOffer::where('offers_id', $id)->get();

Cuma saya perlu menukar di mana dengan dapatkan

Tetapi saya masih tidak tahu, apa yang berlaku? Saya ingin tahu mengapa ini berlaku.

P粉404539732

Kaedah get() pada

loquent mengembalikan koleksi Laravel, iaitu apa sahaja yang anda letakkan selepasnya, seperti where() mempengaruhi koleksi yang terhasil, lihat https://laravel.com/docs/9. x/collections, koleksi ialah objek seperti tatasusunan tetapi dengan banyak fungsi yang serupa dengan pertanyaan pangkalan data, tetapi semuanya dalam memori tempatan.

Jika anda mempunyai kaedah where() sebelum get(), anda sedang membina pertanyaan pangkalan data dan pertanyaan itu tidak akan dilaksanakan sehingga get(). Anda mendapat hasil yang berbeza kerana kaedah pembinaan dan pengumpulan pertanyaan berfungsi sama, tetapi kaedah tersebut menjalankan operasi yang berbeza.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!