Projets Laravel France

comparaison de 2 données

Avatar de jojossj
jojossj

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.

Posté il y a 1 an
Avatar de KYoann
KYoann

Salut,

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

Posté il y a 1 an
Avatar de jojossj
jojossj

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.

Posté il y a 1 an
Avatar de jojossj
jojossj

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.

Posté il y a 1 an
Avatar de jojossj
jojossj

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 !');

        }
Posté il y a 1 an

Vous ne pouvez pas répondre à ce sujet.