Laravel Eloquent 的 where 方法只傳回資料庫中第一筆記錄的陣列
P粉966979765
P粉966979765 2024-01-03 10:53:43
0
2
512

我有這樣的程式碼:

$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粉966979765
P粉966979765

全部回覆(2)
P粉136356287

好的,我找到了解決方案

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

只是我必須將 whereget 交換

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

P粉404539732

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

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板