在插入多个数据时,将数组转换为错误,下面我提到的代码请看一下,有人来帮我
Controller.php
if(!empty($value))
{
foreach ($value as $v)
{
$insert[] = ['name' => $v['name'], 'email' => $v['email'],'company_name' => $v['company_name'],'company_id' => $v['company_id'], 'emp_id' => $v['emp_id']];
$role_id= $v['role_id'];
$name=$v['name'];
$email=$v['email'];
$emails[]=$v['email'];
$emp_id=$v['emp_id'];
$data = array( 'name' => $name,'email' => $email , 'emp_id' => $emp_id);
$roles[]= $v['role_id'];
}
}
}
if(!empty($insert))
{
$inserted=User::insert($insert);
if($inserted)
{
$email_select=User::select('id')->whereIn('email',$emails)->where('company_id',Auth::user()->company_id)->orderBy('id','Asc')->get();
foreach ($email_select as $key => $idget)
{
$getid[]=$idget->id;
}
}
$datas[]=['user_id' => $getid , 'role_id' => $roles];
$insert_role=DB::table('role_user')->insert($datas) ;
在执行insert_role变量时,我得到了名为数组到字符串转换的错误
(2/2) QueryException数组到字符串转换(SQL:插入到
role_user
(role_id
,user_id
)值(1,16))
发布于 2017-09-12 02:16:49
$roles
和$getid
都是数组。我猜您希望将所有角色分配给所有选定的邮件地址。然后,您必须执行以下操作:
if($inserted)
{
$email_select=User::select('id')->whereIn('email',$emails)->where('company_id',Auth::user()->company_id)->orderBy('id','Asc')->get();
foreach ($email_select as $key => $idget)
{
foreach($roles as $role) {
$datas[] = ['user_id' => $idget->id, 'role_id' => $role];
}
}
}
$insert_role=DB::table('role_user')->insert($datas);
我觉得这个应该管用。
发布于 2017-09-12 02:13:57
使$roles[]= $v['role_id'];
到$roles= $v['role_id'];
和$getid[]=$idget->id;
到$getid=$idget->id;
发布于 2017-09-12 04:50:58
不是在数组中赋值,而是尝试将其赋值为字符串,这就是导致错误的原因,可能的修正是。
$roles[]= $v['role_id'];
$getid[]=$idget->id;
https://stackoverflow.com/questions/46173560
复制相似问题