1366 Incorrect integer value error while storing data into the database in laravel
1366 Incorrect integer value error while storing data into the database in laravel
在我的 laravel 应用程序中,我有两个用户角色,管理员和普通用户。
管理员也可以在一般用户配置文件中添加数据。
在我的数据库 table 中,我有两列用于保存用户 ID 和 added_by 用户的 ID。
如果一般用户将记录添加到自己的个人资料中,则此列都应包含一般用户的用户 ID。
但如果管理员用户这样做,则 added_by 必须填写管理员的用户 ID。
我正在从 URL 中获取一般用户的用户 ID。
目前我的函数看起来像这样(这里,我只包含了这个问题的相关部分)
$employee_Id=$request->get('emp_id');
if(is_numeric($employee_Id)){
$employee_Id=$request->get('emp_id');
$user = User::where('id',$employee_Id);
$addedBy_User = User::find(auth()->user()->id);
//If the employer tried to add their stats
}else{
$user=User::find(auth()->user()->id);
$employee_Id=$user->id;
$addedBy_User =User::find(auth()->user()->id);
}
$statsUser = StatsUser::create([
'stat_id' => $stat->id,
'user_id' => $employee_Id,
'added_by' => $addedBy_User,
]);
但这给了我一个错误提示,1366 Incorrect integer value
我做错了什么,我应该在哪里修复?
完整的报错信息如下,
1366 Incorrect integer value: '{\"id\":869,\"language\":\"en\",\"first_name\":\"Test\",\"last_name\":\"Name2\",\"email\":\"testmail@gmail.com\",\"email_verified_at\":\"2022-03-...' for column `cricketstats`.`stats_user`.`added_by` at row 1
这是有道理的,因为在您的 if
语句中您正在检查 $employee_Id
是否为数字。然后查看 else
语句中的内容:
//...
} else {
$user=User::find(auth()->user()->id);
$employee_Id=$user->id;
$addedBy_User = $employee_Id; // <--
}
所以,当 $employee_Id
不是数字时,那么 $addedBy_User
也不是数字 -> 不是整数。因此,抛出异常。
$addedBy_User = User::find(auth()->user()->id);
StatsUser::create([
'stat_id' => $stat->id,
'user_id' => $employee_Id,
'added_by' => $addedBy_User,
]);
$addedBy_User是一个对象,解决方案->$addedBy_User->id
$addedBy_User
是将从数据库中获取的对象。因此您不能将对象分配给 table 字段。所以不用 $addedBy_User
使用 $addedBy_User->id
.
$addedBy_User = User::find(auth()->user()->id);
$statsUser = StatsUser::create([
'stat_id' => $stat->id,
'user_id' => $employee_Id,
'added_by' => $addedBy_User->id,
]);
在我的 laravel 应用程序中,我有两个用户角色,管理员和普通用户。
管理员也可以在一般用户配置文件中添加数据。
在我的数据库 table 中,我有两列用于保存用户 ID 和 added_by 用户的 ID。
如果一般用户将记录添加到自己的个人资料中,则此列都应包含一般用户的用户 ID。
但如果管理员用户这样做,则 added_by 必须填写管理员的用户 ID。
我正在从 URL 中获取一般用户的用户 ID。
目前我的函数看起来像这样(这里,我只包含了这个问题的相关部分)
$employee_Id=$request->get('emp_id');
if(is_numeric($employee_Id)){
$employee_Id=$request->get('emp_id');
$user = User::where('id',$employee_Id);
$addedBy_User = User::find(auth()->user()->id);
//If the employer tried to add their stats
}else{
$user=User::find(auth()->user()->id);
$employee_Id=$user->id;
$addedBy_User =User::find(auth()->user()->id);
}
$statsUser = StatsUser::create([
'stat_id' => $stat->id,
'user_id' => $employee_Id,
'added_by' => $addedBy_User,
]);
但这给了我一个错误提示,1366 Incorrect integer value
我做错了什么,我应该在哪里修复?
完整的报错信息如下,
1366 Incorrect integer value: '{\"id\":869,\"language\":\"en\",\"first_name\":\"Test\",\"last_name\":\"Name2\",\"email\":\"testmail@gmail.com\",\"email_verified_at\":\"2022-03-...' for column `cricketstats`.`stats_user`.`added_by` at row 1
这是有道理的,因为在您的 if
语句中您正在检查 $employee_Id
是否为数字。然后查看 else
语句中的内容:
//...
} else {
$user=User::find(auth()->user()->id);
$employee_Id=$user->id;
$addedBy_User = $employee_Id; // <--
}
所以,当 $employee_Id
不是数字时,那么 $addedBy_User
也不是数字 -> 不是整数。因此,抛出异常。
$addedBy_User = User::find(auth()->user()->id);
StatsUser::create([ 'stat_id' => $stat->id, 'user_id' => $employee_Id, 'added_by' => $addedBy_User,
]);
$addedBy_User是一个对象,解决方案->$addedBy_User->id
$addedBy_User
是将从数据库中获取的对象。因此您不能将对象分配给 table 字段。所以不用 $addedBy_User
使用 $addedBy_User->id
.
$addedBy_User = User::find(auth()->user()->id);
$statsUser = StatsUser::create([
'stat_id' => $stat->id,
'user_id' => $employee_Id,
'added_by' => $addedBy_User->id,
]);