簡體   English   中英

Laravel Eloquent 僅在數據庫中的第一條記錄上返回數組(`where` 方法)

[英]Laravel Eloquent returns Array only on first record in database (`where` method)

我有這樣的代碼:

$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 個密鑰。

這里發生了什么? 為什么我收到一個對象而不是數組? 當 offer_id 大於 1 時會發生這種情況。 Offers_id 是外鍵。

好的,我找到了解決方案

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

只是我不得不用get交換where

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

eloquent 上的 get() 方法返回一個 laravel 集合,之后放置的任何內容,例如 where(),都會影響生成的集合,請參見https://laravel.com/docs/9.x/collections ,集合是一個類似於一個數組,但有大量類似於數據庫查詢的函數,但都在本地內存中。

如果你在 get() 之前有 where() 方法,那么你正在構建一個數據庫查詢,它直到 get() 才會執行。 您會得到不同的結果,因為查詢構建和收集方法的工作方式相似,但它們做的事情不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM