首頁  >  問答  >  主體

Laravel Eloquent 的 where 方法只傳回資料庫中第一筆記錄的陣列

我有這樣的程式碼:

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

當我返回 $subOffers 時,我得到了一個像這樣的數組。

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

但是當我將 1 更改為 2 或 3 或 4 或...時,我得到了像這樣的物件。

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

在本例中,我將其更改為 4,並且獲得了 n-1 金鑰。

這是怎麼回事?為什麼我收到的是物件而不是陣列?當 Offers_id 大於 1 時,就會發生這種情況。 Offers_id 是外鍵。

P粉966979765P粉966979765313 天前500

全部回覆(2)我來回復

  • P粉136356287

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

    好的,我找到了解決方案

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

    只是我必須將 whereget 交換

    但是我還是不知道,這是怎麼回事?我想知道為什麼會這樣。

    回覆
    0
  • P粉404539732

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

    eloquent 上的get() 方法傳回一個Laravel 集合,即您在其後放置的任何內容,例如where() 影響生成的集合,請參閱https://laravel.com/docs/9 。 x/collections,集合是一個類似於數組的對象,但具有大量類似於資料庫查詢的功能,但全部都在本地記憶體中。

    如果在 get() 之前有 where() 方法,則您正在建立資料庫查詢,並且直到 get() 才會執行該查詢。您會得到不同的結果,因為查詢建置和收集方法的工作方式相似,但它們執行不同的操作。

    回覆
    0
  • 取消回覆