Laravel获得角色颜色等等

时间:2015-07-25 18:05:07

标签: php laravel-4 roles has-and-belongs-to-many rbac

我试图在我自己的论坛软件中制作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内获取用户的角色。

我也有这些模型:

models

这些文件中只有Eloquent和protected $table的扩展。

role表的方案如下所示: scheme

我确实听过很多关于belongsTo和hasMany的事情,但我真的不明白......

我希望能够在正确的用户上获得正确的颜色。

所以用户表的方案是:

user scheme

我希望有人可以帮助我,因为我很长时间都在寻找答案。

我正在使用Laravel4

最诚挚的问候,

罗宾

1 个答案:

答案 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