Rumah  >  Soal Jawab  >  teks badan

Kaedah Laravel Eloquent hanya mengembalikan tatasusunan rekod pertama dalam pangkalan data

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粉966979765P粉966979765313 hari yang lalu504

membalas semua(2)saya akan balas

  • P粉136356287

    P粉1363562872024-01-04 09:37:25

    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.

    balas
    0
  • P粉404539732

    P粉4045397322024-01-04 09:35:16

    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.

    balas
    0
  • Batalbalas