具有多对多关系的存储方法的数据截断错误
Data truncated error on store method with ManyToMany relationships
我是 Laravel 的新手,在处理多对多关系时遇到问题。
我有两个table:
- 成员
- 组
一个成员可以属于多个组,一个组可以有多个成员。
我已经在模型和枢轴中创建了关系 table。
当我创建成员时,我有组的复选框。
在我的存储方法中,我这样做:
....
$member->save();
if(isset($request->groups)) {
$groups = implode(',', $request->groups);
$member->groups()->sync([$groups]);
}
dd($groups)
给出:“2,7”
我收到错误:
QueryException in Connection.php line 761: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'group_id' at row 1 (SQL: insert into group_member
(group_id
, member_id
) values (2,7, 5))
这个 5 是从哪里来的,为什么会出现这个错误?
谢谢
此错误是由于您输入的数据类型所致。
使用
implode()
您将数组转换为字符串,而 sync() 方法需要一个数组作为输入。让我们试试:
$member->save();
if(isset($request->groups)) {
$member->groups()->sync($request->groups);
}
为了避免因逗号分隔的字符串而可能出现的不一致,我将转换
$request->groups
,这是一个字符串,在将其添加到同步函数之前将其添加到标准数组。
if(isset($request->groups)) {
$groupIds = array($request->input('groups'));
$member->groups()->sync($groupdIds);
}
我是 Laravel 的新手,在处理多对多关系时遇到问题。
我有两个table:
- 成员
- 组
一个成员可以属于多个组,一个组可以有多个成员。
我已经在模型和枢轴中创建了关系 table。
当我创建成员时,我有组的复选框。
在我的存储方法中,我这样做:
....
$member->save();
if(isset($request->groups)) {
$groups = implode(',', $request->groups);
$member->groups()->sync([$groups]);
}
dd($groups)
给出:“2,7”
我收到错误:
QueryException in Connection.php line 761: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'group_id' at row 1 (SQL: insert into
group_member
(group_id
,member_id
) values (2,7, 5))
这个 5 是从哪里来的,为什么会出现这个错误?
谢谢
此错误是由于您输入的数据类型所致。
使用
implode()
您将数组转换为字符串,而 sync() 方法需要一个数组作为输入。让我们试试:
$member->save();
if(isset($request->groups)) {
$member->groups()->sync($request->groups);
}
为了避免因逗号分隔的字符串而可能出现的不一致,我将转换
$request->groups
,这是一个字符串,在将其添加到同步函数之前将其添加到标准数组。
if(isset($request->groups)) {
$groupIds = array($request->input('groups'));
$member->groups()->sync($groupdIds);
}