recherche

Maison  >  Questions et réponses  >  le corps du texte

La méthode Where de Laravel Eloquent renvoie uniquement un tableau du premier enregistrement de la base de données

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粉966979765P粉966979765336 Il y a quelques jours511

répondre à tous(2)je répondrai

  • P粉136356287

    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 avec get

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

    répondre
    0
  • P粉404539732

    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.

    répondre
    0
  • Annulerrépondre