Laravel 6 v indexu čepel jak mohu zobrazit pouze uživatele, kteří mají role a jejich role v tabulce

0

Otázka

V index.blade.php napsal jsem tyto kódy zobrazovat uživatelům, kteří mají role

<thead>
    <tr>
        <th scope="col">Name</th>
        <th scope="col">Email</th>
        <th scope="col">Roles</th>
        <th scope="col">Actions</th>
    </tr>
</thead>
<tbody>
    @foreach($users as $user)
        <tr>
            <td>{{ $user->name }}</td>
            <td>{{ $user->email }}</td>
            <td>{{ $user->roles }}</td>
            <td>Show</td>
        </tr>
    @endforeach
</tbody>

A napsal jsem tyto kódy v UserController,

 $userId = \DB::table('role_user')->get()->pluck('user_id');
 $users = User::find($userId);

 return view('admin.index', compact('users'));

A já mám tyto na webových stránkách:

[{"id":1,"name":"User Administrator","description":null,"created_at":"2021-11-23 03:06:49","updated_at":"2021-11-23 03:06:49","pivot":{"user_id":1,"role_id":1}}]

[{"id":2,"name":"Moderator","description":null,"created_at":"2021-11-23 03:06:49","updated_at":"2021-11-23 03:06:49","pivot":{"user_id":2,"role_id":2}}]

Jak mohu zobrazit pouze názvy v tabulce role sloup?

laravel php
2021-11-24 02:22:41
2
0

Při volání user->roles, jste s největší pravděpodobností volá ke vztahu na svůj Uživatelský model. To znamená, že se vrací kolekci. Pokud umístíte kolekce ve složených závorkách v blade ({{ $user->roles }}), Laravel automaticky volá toArray() na každý model, a json_encode na výsledek, který výsledky v JSON řetězce, můžete skončit vidět.

Chcete pouze názvy, nicméně, takže by bylo lepší, aby se chytit tyto hodnoty a převést na řetězec. Možnost je, škubání na namea hroutí výsledek:

implode(', ', $user->roles()->pluck('name')->toArray());

Budete muset zavolat toArray() na pluck() výsledek, jinak budete mít sbírku, místo pole, které implode nefunguje.

2021-11-24 07:41:16
0

Pokud uživatel je přihlášen a jeho role je být zobrazeny, můžete použít ve vašem blade:

{{ Auth::user()->roles->pluck('name') }}

Nebo jste chtěli zobrazit rools jiného uživatele, pak můžete to udělat takto:

// in Controller fetch the user:
$user = User::find(42);

// in your Blade:
{{ $user->roles->pluck('name') }}

V této souvislosti, máte několik metod, které můžete použít:

  • role
  • hasRole
  • hasAnyRole
  • hasAllRoles
  • getRoleNames
2021-11-24 07:52:49

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................