Die where-Methode von Laravel Eloquent gibt nur ein Array des ersten Datensatzes in der Datenbank zurück
P粉966979765
P粉966979765 2024-01-03 10:53:43
0
2
506

Ich habe diesen Code:

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

Wenn ich $subOffers zurückgebe, erhalte ich ein Array wie dieses.

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

Aber wenn ich 1 zu 2 oder 3 oder 4 oder... ändere, bekomme ich ein Objekt wie dieses.

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

In diesem Fall habe ich es auf 4 geändert und n-1 Schlüssel erhalten.

Was ist los? Warum erhalte ich ein Objekt anstelle eines Arrays? Dies geschieht, wenn Offers_id größer als 1 ist. Offers_id ist der Fremdschlüssel.

P粉966979765
P粉966979765

Antworte allen(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() 才会执行该查询。您会得到不同的结果,因为查询构建和收集方法的工作方式相似,但它们执行不同的操作。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage