我试图在我自己的论坛软件中制作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
的扩展。
我确实听过很多关于belongsTo和hasMany的事情,但我真的不明白......
我希望能够在正确的用户上获得正确的颜色。
所以用户表的方案是:
我希望有人可以帮助我,因为我很长时间都在寻找答案。
我正在使用Laravel4
最诚挚的问候,
罗宾
答案 0 :(得分:0)
你是对的,你需要添加一些relationships:
// 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);
}
然后将您的控制器调整为eager load这些关系。
$comments = Comment::orderBy('posted_at')->with('user.role')->get();
现在,您可以在刀片模板中显示评论旁边的颜色,如:
@foreach ($comments as $comment)
<p>Color: {{ $comment->user->role->colour }}</p>
@endfoeach