委托找不到用户的角色

时间:2014-10-17 09:49:15

标签: laravel eloquent

我的控制器方法中有以下内容将JSON返回到我的视图:

    public function RolesForUser()
    {
        $userid = Input::get('userid');

        $assigned = DB::table('assigned_roles')
                ->select(array('role_id'))
                ->where('user_id', '=', $userid)
                ->get();

        $user = User::find($userid);
        $roles = $user->roles();

        $data = array('assigned' => $assigned, 'roles' => $roles);
        return Response::json($data);
    }

返回以下内容(使用Fiddler进行检查):

{"assigned":[{"role_id":"2"},{"role_id":"3"},{"role_id":"4"}],"roles":{}}

使用查询生成器的SQL语句返回正确的结果,但使用Entrust的方法(在更改为我的用户模型后从Entrust Issue 34复制)不会返回任何角色。

我也尝试了this SO question中的解决方案,但它只是给我一个SQL错误。

我出错的任何想法,我在Laravel 4.2.11上?

我的用户模型:

class User extends Eloquent implements UserInterface, RemindableInterface 
{
use HasRole;

/**
 * The database table used by the model.
 *
 * @var string
 */
protected $table = 'Users';

/**
 * The attributes excluded from the model's JSON form.
 *
 * @var array
 */
protected $hidden = array('Password');

protected $primaryKey = 'UserID';

public $timestamps = false;

/*Standard methods removed for brevity*/

public function roles()
{
    return $this->hasMany('Role');
}
}

1 个答案:

答案 0 :(得分:0)

看起来您定义了roles方法,不应该定义。使用特征HasRole已将roles关系添加到User模型。

查看HasRole为您的模型添加的其他内容:https://github.com/Zizaco/entrust/blob/master/src/Entrust/HasRole.php

roles()方法返回一个关系。建议您返回->roles->roles()->get()

希望这有帮助。