Database 无法将数据库雄辩集合类的对象转换为int

Database 无法将数据库雄辩集合类的对象转换为int,database,laravel,eloquent,Database,Laravel,Eloquent,我正在访问用户表属性“role”,希望检查role是否为2,然后显示dashboard,但出现此错误。 这是我的密码 protected $casts = [ 'role' => 'integer', ]; 这是我访问用户角色列值的控制器函数。它返回数组中的值,但我想将其与整数值“2”进行比较 public function postSignIn(Request $request) { $this->validate($request,[ 'emai

我正在访问用户表属性“role”,希望检查role是否为2,然后显示dashboard,但出现此错误。 这是我的密码

protected $casts = [
    'role' => 'integer',
];
这是我访问用户角色列值的控制器函数。它返回数组中的值,但我想将其与整数值“2”进行比较

public function postSignIn(Request $request)
{
    $this->validate($request,[
        'email' => 'required',
        'password' => 'required',
    ]);
    $posts = Post::all();
    $email = $request['email'];
    $user = User::where("email",$email)->get(['role']);
    if(Auth:: attempt(['email' => $request['email'] , 'password' => $request['password']]))
    {
        if ($user == 2) {
            return view('admin.dashboard');

        }
        else {
            return view('frontend.layouts.user_login_layout', compact('posts'));
        }
    }else{
        return "wrong User";
    }
}

问题

$user = User::where("email",$email)->get(['role']); // <= look here (fetching)

if ($user == 2) { // <= look here (validation)
  return view('admin.dashboard');
}
注意:集合是包含其他对象的对象

如果电子邮件是唯一值,则可以使用
->first()
检索与查询约束匹配的第一个模型-

如果需要多条记录,可以使用诸如
->all()
->get()
之类的方法来检索多个结果-

验证

此时,
$user
变量包含一个有说服力的对象,无法将对象与整数(
int
)进行比较

您真正想要做的是:检查用户的角色是否等于2

if ($user->role == 2) { // <= look here 
   return view('admin.dashboard');
}

如果($user->role==2){//在代码中更改此行

$user = User::where("email",$email)->get(['role']);
对此

$user = User::where("email",$email)->first();
as get将返回一个集合,然后您可以检查用户角色as

if ($user->role == 2) {

我已尝试此操作。它显示异常。此集合实例上不存在属性[role]。当我使用if($user['role']==2)时它显示未定义的索引:roleyou应该使用与数据库中的角色“列名”相同的名称。如果找不到,请为您的用户对象提供db架构。就像我以前说过的:$user是对象而不是数组!…您不能像数组一样访问它。架构::create('users',function(Blueprint$table){$table->increments('id')->unique();$table->string('email')->unique();$table->string('password');$table->integer('role');$table->timestamp('last_login')->nullable();$table->rememberToken();$table->timestaps(););我的列名是role。与我在控制器函数中使用的列名相同
if ($user->role == 2) {