我有两个表 Users 和 Groups ,我想将用户添加到具有良好关系的组中。 mysql表:
组表:
id
name
user_id
用户表:
id
name
email
password
Group.php 模型具有:
public function user()
{
return $this->hasMany('App\User');
}
User.php 模型具有:
public function group()
{
return $this->belongsTo('App\Group');
}
GroupController.php
public function store(Request $request)
{
$request->validate([
'name'=>'required|string',
'user_id' => 'required',
]);
$group = new Group([
'name' => $request->get('name'),
'user_id'=> $request->get('user_id')
]);
$group->save();
return redirect('/groups')->with('success', 'Group has been added');
}
create.blade.php 视图
<div class="form-group">
<select name="user_id[]" class="form-control" multiple>
@foreach ($users as $user)
<option value="{{$user->id}}">{{$user->name}}</option>
@endforeach
</select>
</div>
错误是“ 数组到字符串的转换” 如果我在TeamController的save()之前添加“ dd($ group)”,则会得到user_ids dd results,但是当它尝试$ group-> save()时;我得到错误,有帮助吗?谢谢
答案 0 :(得分:2)
您尝试执行的操作无法通过表结构实现。您需要更改表结构,
一组-多位用户
所以,您的表结构应该是
组
id
name
用户
id
name
email
password
group_id
您的关系定义应该是
组模型
public function users()
{
return $this->hasMany('App\User', 'group_id');
}
用户模型
public function group()
{
return $this->belongsTo('App\Group', 'group_id');
}
最后
public function store(Request $request)
{
$request->validate([
'name'=>'required|string',
'user_id' => 'required|array',
]);
$group = new Group([
'name' => $request->get('name'),
]);
$group->save();
foreach($request->get('user_id') as $id)
{
$user = App\User::findOrFail($id);
$user->group_id = $group->id
$user->save();
}
return redirect('/groups')->with('success', 'Group has been added');
}
答案 1 :(得分:0)
使用for循环将用户保存到组。
foreach($request->user_id as $user_id)
$group = new Group([
'name' => $request->get('name'),
'user_id'=> $user_id
]);
$group->save();
)
答案 2 :(得分:0)
正如其他评论所述,您应该遍历它们。
您不应该在用户模型上使用group_id吗?
这样,您便拥有唯一的组名,并且可以将用户广告添加到组中,或者如果您希望用户属于多个组,请为其创建数据透视表。
id
name
id
name
email
password
group_id
编辑:
正如其他人所说,您将不得不遍历他们。变量$request->get('user_id')
包含在标签中选择的所有用户的数组。您想遍历。这样会在您的组表中创建重复的名称。
foreach ($request->get('user_id') as $userid){
$group = new Group();
$group->name = $request->get('name');
$group->user_id = $userid;
$group->save();
}