Besoin d'aide ?

Faire afficher les personnages reliés à un user.

Avatar de AlexandreCarignan
AlexandreCarignan

Bonjour, j'ai deux tables, une Users et une characters.

J'aimerais pouvoir faire afficher dans un tableau tous les characters relié à un utilisateur (users) J'ai essayé diverse méthode, mais je ne maitrise pas les jointures.

Pourriez-vous m'aider?

Voici mon contrôleur:

public function index()
    {

        //$users = User::all();
        $data= DB::table('users')
    //  ->select('users.name','characters.character_name')
        ->join('characters','users.id', 'characters.user_id')

        ->get();
      echo "<pre>";
      print_r($data);
    //return view('profile.user.index')->with('user', $data);
    }

Ici, mon problème, c'est qu'il me sort plusieurs data peut importe l'id du user connecté.

Illuminate\Support\Collection Object
(
    [items:protected] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 1
                    [name] => user
                    [email] => user@user.com
                    [email_verified_at] => 2021-06-22 11:02:46
                    [password] => $2y$10$hlekJPjV.YHwlzIX6/jya.8LaZzrVKZoOYHb3RnQnX3HRFQowy2Qq
                    [role] => user
                    [remember_token] => 
                    [created_at] => 2021-06-22 11:09:19
                    [updated_at] => 2021-06-22 11:09:19
                    [user_id] => 1
                    [character_name] => Ben
                    [character_age] => 
                    [character_title] => test                   
                    
                    )

            [1] => stdClass Object
                (
                    [id] => 2
                    [name] => user
                    [email] => user@user.com
                    [email_verified_at] => 2021-06-22 11:02:46
                    [password] => $2y$10$hlekJPjV.YHwlzIX6/jya.8LaZzrVKZoOYHb3RnQnX3HRFQowy2Qq
                    [role] => user
                    [remember_token] => 
                    [created_at] => 2021-06-22 11:09:51
                    [updated_at] => 2021-06-22 11:09:51
                    [user_id] => 1
                    [character_name] => Ben3
                    [character_age] => 
                    [character_title] => test
                )

Comment devrais-je écrire ma boucle dans mon index pour faire afficher tous les personnages pour qui characters.user_id = user,id ?

                    <div class="card">
                        <div class="card-body p-4">
                            <div class="row justify-content-center">
                                <tbody>
                                    $characters = characters.character_id === user.id
                                    @foreach ($character as $character)
                                        <tr>

                                                <td>{{ $Character->name }}</td>

                                        </tr>
                                    @endforeach
                                </tbody>
                            </div>
                        </div>
                    </div>

Merci.

Posté il y a 1 mois
Avatar de AlexandreCarignan
AlexandreCarignan

Solution trouvé:

Contrôleur:

public function index()
    {

    $user = auth()->user();
    return view('profile.user.index', compact('user'));

    }

Index:

                    <div class="card">
                        <div class="card-body p-4">
                            <div class="row justify-content-center">
                                <tbody>

                                    @foreach($user->characters as $character)
                                    {{ $character->character_name }}
                                    @endforeach
                                </tbody>
                            </div>
                        </div>
                    </div>

Ajuster le modèle User

use App\Models\Character; ...
Posté il y a 1 mois

Vous ne pouvez pas répondre à ce sujet.