La méthode Where de Laravel Eloquent renvoie uniquement un tableau du premier enregistrement de la base de données
P粉966979765
P粉966979765 2024-01-03 10:53:43
0
2
607

J'ai ce code :

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

Lorsque je renvoie $subOffers, j'obtiens un tableau comme celui-ci.

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

Mais quand je change 1 en 2 ou 3 ou 4 ou... j'obtiens un objet comme celui-ci.

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

Dans ce cas, je l'ai changé en 4 et j'ai obtenu les clés n-1.

Que se passe-t-il ? Pourquoi est-ce que je reçois un objet au lieu d’un tableau ? Cela se produit lorsque Offers_id est supérieur à 1. Offers_id est la clé étrangère.

P粉966979765
P粉966979765

répondre à tous(2)
P粉136356287

D'accord, j'ai trouvé la solution

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

C'est juste que je dois échanger avec get

Mais je ne sais toujours pas, que se passe-t-il ? Je veux savoir pourquoi cela se produit.

P粉404539732

La méthode get() sur

eloquent renvoie une collection Laravel, c'est-à-dire tout ce que vous mettez après, commewhere() affecte la collection résultante, voir https://laravel.com/docs/9. x/collections, une collection est un objet de type tableau mais avec de nombreuses fonctionnalités similaires aux requêtes de base de données, mais le tout dans la mémoire locale.

Si vous avez une méthode Where() avant get(), vous créez une requête de base de données et la requête ne sera exécutée qu'après get(). Vous obtiendrez des résultats différents car les méthodes de création de requêtes et de collecte fonctionnent de la même manière, mais elles effectuent des opérations différentes.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal