Database 无法将数据库雄辩集合类的对象转换为int
我正在访问用户表属性“role”,希望检查role是否为2,然后显示dashboard,但出现此错误。 这是我的密码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
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) {