Я пытаюсь сделать RBAC в моем собственном программном обеспечении форума.
Пока что разрешения работают, но проблема в том, что когда я хочу добавить цвета к именам пользователей (что есть и в MyBB), что-то не работает, и я не понимаю этого заранее.
Итак, у меня есть ForumController
с этим кодом внутри:
<?php
class ForumController extends \BaseController {
public function index()
{
$forums = Forums::orderBy('disp_order', 'asc')->get();
$categories = Categorie::orderBy('disp_order', 'asc')->get();
return View::make('index')->with('forums', $forums)->with('categories', $categories);
}
public function forum($name)
{
$forums = Forums::where('name', '=', str_replace('Forum-', '',str_replace('-', ' ', $name)))->first();
$categories = Categorie::orderBy('disp_order', 'asc')->get();
return View::make('forum')->with('forums', $forums)->with('categories', $categories);
}
public function categorie($name)
{
$categories = Categorie::where('name', '=', str_replace('Categorie-', '',str_replace('-', ' ', $name)))->first();
$threads = Thread::orderBy('date_posted', 'asc')->get();
return View::make('categorie')->with('categories', $categories)->with('threads', $threads);
}
public function thread($title)
{
$thread = Thread::where('title', '=', str_replace('Thread-', '',str_replace('-', ' ', $title)))->first();
$comments = Comment::orderBy('posted_at', 'asc')->get();
return View::make('thread')->with('threads', $thread)->with('comments', $comments);
}
}
Хорошо, все это работает.
Но теперь мне нужно получить роли для пользователей внутри функции thread
,
У меня также есть эти модели:
Существует только расширение Eloquent и protected $table
внутри этих файлов.
Схема моя role
таблица выглядит так:
Я кое-что слышал о принадлежащих и имеющих много людей, но я действительно не понимаю этого …
Я хочу быть в состоянии получить правильный цвет на нужного пользователя.
Итак, схема пользовательской таблицы:
Я надеюсь, что кто-то может мне помочь, потому что я ищу ответ долгое время.
я использую Laravel4
С наилучшими пожеланиями,
Робин
Вы правы, вам нужно добавить немного отношения:
// In Comment.php, assuming that your comments table has a user_id field.
public function user()
{
return $this->belongsTo(User::class);
}
// In User.php
public function role()
{
return $this->belongsTo(Role::class);
}
Затем настройте свой контроллер на нетерпеливый груз эти отношения.
$comments = Comment::orderBy('posted_at')->with('user.role')->get();
Теперь вы можете показать цвет рядом с комментарием в вашем шаблоне блейда, например:
@foreach ($comments as $comment)
<p>Color: {{ $comment->user->role->colour }}</p>
@endfoeach
Других решений пока нет …