我的控制器方法中有以下内容将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');
}
}
答案 0 :(得分:0)
看起来您定义了roles
方法,不应该定义。使用特征HasRole
已将roles
关系添加到User
模型。
查看HasRole
为您的模型添加的其他内容:https://github.com/Zizaco/entrust/blob/master/src/Entrust/HasRole.php
roles()方法返回一个关系。建议您返回->roles
或->roles()->get()
。
希望这有帮助。