2 votes

Laravel 5.1 ne peut pas utiliser @foreach sur une collection

Ceci est la donnée que j'ai: entrer la description de l'image ici

mais avec ce code de modèle blade:

    @foreach ($orders as $order)

            {{$order->id}} //51 ligne
            {{$order->order->b_first_name}} {{$order->order->b_last_name}}
            {{$order->order->r_first_name}} {{$order->order->r_last_name}}
            £{{$order->total}}

            {{$order->validity->diffForHumans()}}

        @endforeach

J'ai obtenu cette erreur:

ErrorException in fbe60fc17d23b35313269a941fc4d6f0 line 51: Trying to get property of non-object (View: /home/dgadmin/public_html/test/resources/views/admin/expired.blade.php)

Quel est le problème ici? Pourquoi je ne peux pas utiliser la boucle @foreach ?

3voto

N Mahurin Points 920

Tout d'abord, allez dans votre dossier /storage/framework/views et regardez la ligne 51 du fichier appelé fbe60fc17d23b35313269a941fc4d6f0. Je vois que vous avez dit que c'était $order->id, mais je n'étais pas sûr si vous aviez vérifié la vue compilée qui est réellement servie ou admin/expired.blade.php. La vue compilée est celle qui lance l'erreur, donc le numéro de ligne correspondra à la vue compilée, et non à la vue blade que vous créez. En regardant cette ligne, vous verrez ce qui manque. Cette erreur est lancée car vous essayez d'accéder à une valeur nulle sur le modèle. Si vous voulez prendre la voie de la facilité, changez votre boucle comme ceci :

@foreach ($orders as $order)

        {{isset($order->id)? $order->id: ''}} //51 ligne
        {{isset($order->order->b_first_name)? $order->order->b_first_name : '' }} {{isset($order->order->b_last_name)? $order->order->b_last_name : ''}}
        {{isset($order->order->r_first_name)? $order->order->r_first_name : ''}} {{isset($order->order->r_last_name)? $order->order->r_last_name : ''}}
        £{{isset($order->total)?$order->total : ''}}

        {{$order->validity->diffForHumans()}}

    @endforeach

Cela affichera la boucle comme prévu, en changeant toutes les valeurs manquantes (comme celle qui a déclenché cette erreur) par une chaîne vide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X