Projets Laravel France

comparaison de 2 données

  • Avatar de jojossj
    Membre depuis :
    01/07/2019
    Messages :
    4

    Bonjour j'aimerais faire une comparaison entre ma valeur que j'envoie via ma méthode post à celle déjà existante dans ma base de donnée pour voir si elle existe déjà malheureusement, même après la comparaison la donnée s'enregistre même si elle existe déjà.

    voici une partie de mon view

    <div class="header">
    <h4 class="title">Lier à une entreprise</h4>
    </div>
    <div class="content">
    <tr>
    <span style="font-weight: bold;">entreprises :</span>
    <br />
    @foreach(\App\Societyuser::all() as $societyuser)
    <td>
    <span>
    {{ $societyuser->Entreprise }}
    <a href="/user/edit/{{ $societyuser->id }}/delete"><button class="btn btn-x">[X]</button></a>
    </span>
    </td>
    @endforeach
    </tr>
    <tr>
    <form method="post" action="{{route('user.bound', $target->id)}}">
    <input type="hidden" name="_method" value="patch">
    @csrf
    <div class="row">
    <div class="col-md-6">
    <select class="form-control m-bot15" name="entreprise_ladder">
    @foreach(\App\Society::all() as $society)
    <option value={{ $society->Nom }}>{{ $society->Nom }}</option>
    @endforeach
    </select>
    </div>
    </div>
    <button type="submit" class="btn btn-info btn-fill pull-right">Lier</button>
    <div class="clearfix"></div>
    </form>

    mon controller

    public function bound(Request $request, $id)
    {
    $user = Auth::user();

    if($user->rank == 2) {

    $target = User::find($id);

    $test1 = DB::connection('mysql')->table('Entreprises')->where('Id', $id)->first();

    $test = DB::connection('mysql')->table('societyuser')->where('user_id', $target->Id)->where('email', $target->email)->first();

    if ($test == $request->entreprise_ladder) {
    return back()->with('error1', 'Entreprise déjà liée !');
    } else {
    $host = DB::connection('mysql')->table('societyuser')->insertGetId([
    'Entreprise' => $request->entreprise_ladder,
    'user_id' => $target->id,
    'email' => $target->email,
    ]);
    }

    return back()->with('success1', 'Entreprise liée avec succès !');

    } else {
    return redirect()->route('home');
    }
    }

    ainsi qu'un visuel de mon site
    https://image.noelshack.com/fichiers/2019/27/1/1561996329-capture-du-2019-07-01-17-51-51.png
    comme on peux le voir il me retourne que l'entreprise a été liée alors qu'il devrait me retourner qu'elle est déjà liée.

    merci de votre aide.

  • Avatar de KYoann
    Membre depuis :
    11/02/2019
    Messages :
    22

    Salut,

    Que te renvoi $test, avec par exemple dd($test) ?

  • Avatar de jojossj
    Membre depuis :
    01/07/2019
    Messages :
    4

    il me renvoie null effectivement, malheureusement je ne vois pas comment je pourrai modifier ma requête car j'aimerais récupérer toutes les entreprises liées à l'adresse mail de l'utilisateur.
    Merci pour ta réponse je vais quand même voir avec différentes méthodes pour récupérer les entreprises.

  • Avatar de jojossj
    Membre depuis :
    01/07/2019
    Messages :
    4

    Après plusieurs essaies je récupère les entreprises avec :

    $test = DB::connection('mysql')->table('societyuser')->select('Entreprise')->where('email', $target->email)->Get();
    dd($test);

    https://image.noelshack.com/minis/2019/27/2/1562074966-capture-du-2019-07-02-15-42-31.png
    Désolé pour la capture un peu petite.

    Mais la comparaison ne se fait toujours pas après ça.

  • Avatar de jojossj
    Membre depuis :
    01/07/2019
    Messages :
    4

    c'est bon j'ai enfin réussi après plus de 10 heures d'acharnements, j'ai fait en sorte que si ma requête me retournait "null" alors je créerai ma nouvelle liaison sinon il me retourne que la liaison est déjà faite.

    if($user->rank == 2) {

    $target = User::find($id);

    $test = DB::connection('mysql')->table('societyuser')->select('Entreprise')->where('Entreprise', $request->entreprise_ladder)->where('email', $target->email)->first();

    if ($test === null) {
    $host = DB::connection('mysql')->table('societyuser')->insertGetId([
    'Entreprise' => $request->entreprise_ladder,
    'user_id' => $target->id,
    'email' => $target->email,
    ]);
    } else {
    return back()->with('error1', 'Entreprise déjà liée !');
    }

    return back()->with('success1', 'Entreprise liée avec succès !');

    }

Vous ne pouvez pas répondre à ce sujet.