У меня проблема с получением имени из таблицы role_user для каждого сообщения. У меня есть ACL, поэтому у меня есть 3 таблицы - пользователи, роли, role_user.
Мой код выглядит следующим образом:
Пост-модель
public function user()
{
return $this->belongsTo(user::class);
}
Модель пользователя.
public function posts()
{
return $this->hasMany(post::class);
}
Ролевая модель.
public function users()
{
return $this->hasmany(user::class);
}
PostController,
return view ('admin.posts',[
'posts' => Post::All()
]);
В блейде я повторяю имя пользователя FX по:
@foreach ($posts as $post)
<tr>
<th scope="row">{{$post->id}}</th>
<td>{{$post->category->name}}</td>
**<td>{{$post->user->name}}</td>**
</tr>
@endforeach
Но проблема в том, что я хочу отобразить имя роли (из таблицы role_user) для пользователя, который написал сообщение, которое я зацикливаю.
update
Хорошо, я решил проблему, но, вероятно, есть лучший ват. Кто-нибудь?
Я добавил в модели:
Модель пользователя:
public function roles()
{
return $this->belongsToMany(Role::class);
}
И изменил образец для подражания:
public function users()
{
return $this->belongsToMany(user::class);
}
Пост-контроллер:
class PostController extends Controller
{
public function index()
{
return view ('admin.posts',[
'posts' => Post::with('user')->get(),
'roleUsers' => User::with('roles')->get()
]);
}
и в клинке я делаю
@foreach ($posts as $post)
<tr>
<th scope="row">{{$post->id}}</th>
<td>
<p>
@foreach ($roleUsers as $roleUser)
@foreach($roleUser->roles as $role)
<p>
{{ $role->pivot->user_id === $post->user->id ? "Role: $role->name" : "" }}
</p>
@endforeach
@endforeach
Я думаю, могло бы быть лучшее решение.