Преобразование массива в строку в laravel 5.4, контроллеры

Я получаю ошибку преобразования массива при вставке нескольких данных, код, который я упомянул ниже, пожалуйста, посмотрите, и кто-нибудь поможет мне

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))

1

Решение

$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);

Я думаю, что это должно работать.

1

Другие решения

Делать
$roles[]= $v['role_id'];
в
$roles= $v['role_id'];

А также
$getid[]=$idget->id;
в
$getid=$idget->id;

1

вместо того, чтобы назначать в массиве, вы пытаетесь назначить как строку, то есть то, что вызывает у вас ошибку,
Возможное исправление есть.

$roles[]= $v['role_id'];
$getid[]=$idget->id;
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector