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.
D'accord, j'ai trouvé la solution
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.
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.