我有這樣的程式碼:
$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粉1363562872024-01-04 09:37:25
好的,我找到了解決方案
$subOffers = SubOffer::where('offers_id', $id)->get();
只是我必須將 where 與 get 交換
但是我還是不知道,這是怎麼回事?我想知道為什麼會這樣。
P粉4045397322024-01-04 09:35:16
eloquent 上的get() 方法傳回一個Laravel 集合,即您在其後放置的任何內容,例如where() 影響生成的集合,請參閱https://laravel.com/docs/9 。 x/collections,集合是一個類似於數組的對象,但具有大量類似於資料庫查詢的功能,但全部都在本地記憶體中。
如果在 get() 之前有 where() 方法,則您正在建立資料庫查詢,並且直到 get() 才會執行該查詢。您會得到不同的結果,因為查詢建置和收集方法的工作方式相似,但它們執行不同的操作。