Besoin d'aide ?

hasMany[0] null , pas hasMany[1] , façon de parler

  • Avatar de AlexisGatuingt
    Membre depuis :
    06/01/2019
    Messages :
    31

    Bonjour a tous,

    J'ai un système de messagerie privée gérer par deux tables :
    -Conversation avec un id, personA, personB

    • Message avec conversation_id, expediteur, destinataire, message

    Mon système fonctionne comme ça : Je boucle pour affiché l'ensemble de mes conversation, puis je fais une nouvelle boucle des conversations dans un autre bloc html avec dedans, une autre boucle grâce a la fonction hasMany qui me permet de récupéré les message lié aux conversations .
    Mon système fonctionné très bien jusqu'à aujourd'hui, et aujourd'hui j'ai l'erreur :

    Undefined offset: 0 (View: /homepages/5/d753758651/htdocs/www/resources/views/user/content/messenger.blade.php)

    Je suis incappable d'en expliquer la raison . Tout fonctionné très bien, et on peut pas supprimé les message ou autre. On peut juste supprimé son compte mais tout se lie donc je sais pas, j'ai vérifié ma table conversation j'ai aucun utilisateur inconnu .

    Mon controller :

    public function conversations() {
    return $conversations = Conversation::where('personA', '=', Auth::User()->token)->orWhere('personB','=', Auth::User()->token)->orderByRaw('updated_at DESC')->get();
    }

    Mon model :

    public function message()
    {
    return $this->hasMany('Jesuisnele\Messenger', 'conversation_id', 'id');
    }

    Après j'ai un controller qui se charge de récupéré les données et d'affiché les vues , donc la vue messenger :

    @extends('user/dashboard')
    @extends('user/head')
    @extends('user/foot')
    @extends('user/element/profil-card')
    @extends('user/element/nav-newsfeed')
    @extends('user/element/whofollow')
    @section('messenger')
    <!-- Chat Room
    ================================================= -->
    <div class="chat-room">
    <div class="row">
    <div class="col-md-5">
    <!-- Contact List in Left-->
    <ul class="nav nav-tabs contact-list scrollbar-wrapper scrollbar-outer">
    @if($conversation->count() > 0)
    @foreach($conversation as $key)
    <li class="">

    @php
    $counter = $key->message->count() - 1;
    @endphp
    <a href="#contact-{{$key->id}}" data-toggle="tab">
    <div class="contact">
    <img src="@if($key->message[0]->expediteur === Auth::User()->token) /upload/{{$key->message[0]->show_destinataire[0]->userset->profil_picture}} @else /upload/{{$key->message[0]->show_expediteur[0]->userset->profil_picture}} @endif" alt="" class="profile-photo-sm pull-left"/>
    <div class="msg-preview">
    <h6>@if($key->message[0]->expediteur === Auth::User()->token) {{$key->message[0]->show_destinataire[0]->name}} @else {{$key->message[0]->show_expediteur[0]->name}} @endif</h6>
    <p class="text-muted">{{$key->message[$counter]->message}}</p>
    <small class="text-muted" style="margin-top: 10px !important; color: darkgreen;">{{date('d-m-Y H:i:s', strtotime($key->message[$counter]->created_at))}}</small>
    @if($key->message[$counter]->destinataire === Auth::User()->token)
    <div class="chat-alert"><i style="color: #939598;" class="fas fa-arrow-down"></i></div>
    @else
    <div class="chat-alert"><i style="transform: rotate(-125deg); color: #939598;" class="fas fa-arrow-down"></i></div>
    @endif
    </div>
    </div>
    </a>
    </li>
    @endforeach
    @else
    <h3>Vous n'avez aucune conversation.</h3>
    @endif
    </ul>
    </div>

    <div class="col-md-7">
    <!--Chat Messages in Right-->
    <div class="tab-content scrollbar-wrapper wrapper scrollbar-outer">
    @if($conversation->count() > 0)
    @foreach($conversation as $key)
    <div class="tab-pane" id="contact-{{$key->id}}">
    <div class="chat-body">
    <ul class="chat-message appendText">
    @foreach($key->message as $key_message)
    <li id="{{$key_message->conversation_id}}" class="@if($key_message->destinataire === Auth::User()->token) right @else left @endif">
    <img src="/upload/{{$key_message->show_expediteur[0]->userset->profil_picture}}" alt="" class="profile-photo-sm @if($key_message->destinataire === Auth::User()->token) pull-right @else pull-left @endif" />
    <div class="chat-item">
    <div class="chat-item-header">
    <h5>{{$key_message->show_expediteur[0]->name}}</h5>
    <small class="text-muted">{{date('d-m-Y H:i:s', strtotime($key_message->created_at))}}</small>
    </div>
    <p>{{$key_message->message}}</p>
    </div>
    </li>
    @endforeach
    </ul>
    <div class="send-message">
    <div class="input-group">
    <form method="post" class="form-messenger" action="{{route('sendText')}}" style="display: contents;">
    <input type="hidden" name="_token" id="token-messenger" value="{{ csrf_token() }}">
    <input style="display: none;" id="winny" type="text" name="lastname" value="" class="form-control" placeholder="Votre nom">
    <input type="text" class="form-control message" name="sendtext" placeholder="Ecriver votre message">
    <input type="hidden" name="destinataire" class="desti" value="@if($key->message[0]->expediteur === Auth::User()->token) {{$key->message[0]->destinataire}} @else {{$key->message[0]->expediteur}} @endif">
    <span class="input-group-btn">
    <button class="btn btn-default" type="submit">Envoyer</button>
    </span>
    </form>
    </div>
    </div>
    </div>
    </div>
    @endforeach
    @else
    <h3>Pour démarrer une conversation, envoyer un message depuis le profil d'un utilisateur</h3>
    @endif
    </div><!--Chat Messages in Right End-->
    </div>

    <div class="clearfix"></div>
    </div>
    </div>
    @endsection

    Et le résultats que je trouve avec die and debug sont étrange :
    $conversation = 14 obj
    $conversation[0] = 1 obj [ blabla , personA, personB , id]
    $conversation[0]->message = null
    $conversation[0]->message[0] = null
    $conversation[1] = 1 obj [ blabla , personA, personB , id]
    $conversation[1]->message = 9 obj [ msg1, msg2, msg3, ect }
    $conversation[1]->message[0] = 1obj [msg1]

    enfin bref voilà, et du coup ma variable ($conversation as $key) vaut $conversation[0] le temps de la première boucle et du coup erreur .
    Voilà merci d'avance, et désolé pour ce pavé mais c'est rien de très compliqué je pense, ya quelque chose que j'ai du loupé .
    Merci a tous bonne soirée

  • Avatar de AlexisGatuingt
    Membre depuis :
    06/01/2019
    Messages :
    31

    Pour faire plus court si je prend la balise :

    <img src="@if($key->message[0]->expediteur === Auth::User()->token) /upload/{{$key->message[0]->show_destinataire[0]->userset->profil_picture}} @else /upload/{{$key->message[0]->show_expediteur[0]->userset->profil_picture}} @endif" alt="" class="profile-photo-sm pull-left"/>

    La variable

    $key->message[0]->expediteur

    me retourne une erreur parce que $conversation[0] vaut null mais pas $conversation[1] après test. Mais la boucle foreache parcours le tableau depuis 0 et comme ne trouve rien , me sort une erreur pour l'obj message

  • Avatar de AlexisGatuingt
    Membre depuis :
    06/01/2019
    Messages :
    31

    Edit encore désolé ^^ :
    Et $conversation[1] est égal au dernier résultat de ma table, je peux pas aller au dessus order by desc

Vous ne pouvez pas répondre à ce sujet.