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.
Baiklah, saya jumpa penyelesaiannya
Cuma saya perlu menukar di mana dengan dapatkan
Tetapi saya masih tidak tahu, apa yang berlaku? Saya ingin tahu mengapa ini berlaku.
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.