Maison > Questions et réponses > le corps du texte
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粉1363562872024-01-04 09:37:25
D'accord, j'ai trouvé la solution
$subOffers = SubOffer::where('offers_id', $id)->get();
C'est juste que je dois échanger où avec get
Mais je ne sais toujours pas, que se passe-t-il ? Je veux savoir pourquoi cela se produit.
P粉4045397322024-01-04 09:35:16
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.