Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php laravel错误:数组到字符串的转换_Php_Sql_Laravel_Jquery Select2 - Fatal编程技术网

Php laravel错误:数组到字符串的转换

Php laravel错误:数组到字符串的转换,php,sql,laravel,jquery-select2,Php,Sql,Laravel,Jquery Select2,我已经通过youtube、stakoverflow和其他网站找到了所有解决方案。我正在使用Select2添加多个角色,但始终会出现相同的错误 @foreach$roles作为$role {{$role->name} @endforeach 因为您有角色透视表,所以在用户表中不需要role\u id列 public function store(Request $request) { $this->validate($request, [ 'name'=> 'required

我已经通过youtube、stakoverflow和其他网站找到了所有解决方案。我正在使用Select2添加多个角色,但始终会出现相同的错误

@foreach$roles作为$role {{$role->name} @endforeach
因为您有角色透视表,所以在用户表中不需要role\u id列

public function store(Request $request)
{
$this->validate($request, [
    'name'=> 'required|string|max:225',
    'status'=> 'required',
    'role_id'=> 'required|array',
    'email'=> 'required|string|email|max:225|unique:users',
    'password'=> 'required|string|min:6|confirmed'
]);

$password = Hash::make($request->password);
// dd($request->all());

$user = new User;
$user->name = $request->name;
$user->status = $request->status;
$user->email = $request->email;
$user->password = $password;
$user->remember_token;
$user->save();

foreach($request->input('role_id') as $role)
{
   $user->assign($role);
}
// $user->roles()->sync($request->roles, false);
return back()->with('message', 'User added successfully!!');
}

因为您有角色透视表,所以在用户表中不需要role\u id列

public function store(Request $request)
{
$this->validate($request, [
    'name'=> 'required|string|max:225',
    'status'=> 'required',
    'role_id'=> 'required|array',
    'email'=> 'required|string|email|max:225|unique:users',
    'password'=> 'required|string|min:6|confirmed'
]);

$password = Hash::make($request->password);
// dd($request->all());

$user = new User;
$user->name = $request->name;
$user->status = $request->status;
$user->email = $request->email;
$user->password = $password;
$user->remember_token;
$user->save();

foreach($request->input('role_id') as $role)
{
   $user->assign($role);
}
// $user->roles()->sync($request->roles, false);
return back()->with('message', 'User added successfully!!');
}
$request->role_id是数组,所以不能直接将数组存储到数据库中,所以可以使用以下命令

  $user->role_id = json_encode($request->role_id);
稍后您可以使用json_decode函数来获取角色id的数组。

$request->role_id是数组,所以您不能直接将数组存储到数据库中,所以您可以使用以下命令:

  $user->role_id = json_encode($request->role_id);
稍后,您可以使用json_decode函数获取角色id的数组。

问题:

$request->role\u id是一个数组。没有一个数据

建议:

这里有两件事

您可以与一个用户分配多个规则

您不应该将规则存储在用户表中

public function store(Request $request)
{
$this->validate($request, [
    'name'=> 'required|string|max:225',
    'status'=> 'required',
    'role_id'=> 'required|array',
    'email'=> 'required|string|email|max:225|unique:users',
    'password'=> 'required|string|min:6|confirmed'
]);

$password = Hash::make($request->password);
// dd($request->all());

$user = new User;
$user->name = $request->name;
$user->status = $request->status;
$user->email = $request->email;
$user->password = $password;
$user->remember_token;
$user->save();

foreach($request->input('role_id') as $role)
{
   $user->assign($role);
}
// $user->roles()->sync($request->roles, false);
return back()->with('message', 'User added successfully!!');
}
你应该这样做:

创建另一个表以存储用户角色

并分别存储用户规则

例如:

      $user = new User;
      $user->name = $request->name;
      $user->status = $request->status;
      $user->email = $request->email;
      $user->password = $password;
      $user->remember_token;
      $user->save();

      $roleAssigns = [];
      foreach($request->role_id as $role){
          $roleAssigns[] = [
              'role_id' => $role,
              'user_id' => $user->id
          ]
      }
      //UserRole is the model of user_roles table
      UserRole::insert($roleAssigns);
问题:

$request->role\u id是一个数组。没有一个数据

建议:

这里有两件事

您可以与一个用户分配多个规则

您不应该将规则存储在用户表中

public function store(Request $request)
{
$this->validate($request, [
    'name'=> 'required|string|max:225',
    'status'=> 'required',
    'role_id'=> 'required|array',
    'email'=> 'required|string|email|max:225|unique:users',
    'password'=> 'required|string|min:6|confirmed'
]);

$password = Hash::make($request->password);
// dd($request->all());

$user = new User;
$user->name = $request->name;
$user->status = $request->status;
$user->email = $request->email;
$user->password = $password;
$user->remember_token;
$user->save();

foreach($request->input('role_id') as $role)
{
   $user->assign($role);
}
// $user->roles()->sync($request->roles, false);
return back()->with('message', 'User added successfully!!');
}
你应该这样做:

创建另一个表以存储用户角色

并分别存储用户规则

例如:

      $user = new User;
      $user->name = $request->name;
      $user->status = $request->status;
      $user->email = $request->email;
      $user->password = $password;
      $user->remember_token;
      $user->save();

      $roleAssigns = [];
      foreach($request->role_id as $role){
          $roleAssigns[] = [
              'role_id' => $role,
              'user_id' => $user->id
          ]
      }
      //UserRole is the model of user_roles table
      UserRole::insert($roleAssigns);

无法回显数组,这是错误


您将需要收集数组中的行,然后返回该数组

您无法回送数组,这就是错误


您需要收集数组中的行,然后返回该数组。如果要为.js代码输出数组,可以使用


由于Laravel 5.5

如果要为.js代码输出数组,可以使用


由于Laravel 5.5

将其更改为'role_id.*'=>'required',并且role_id是数组的集合,您应该使用循环运行该集合,然后插入用户角色表,因为用户有多个角色,您需要将它们保存在另一个表中,如user_role错误在这里$user->role_id=$request->role_id;在这一行中,您将数组$request->role\u id分配给单个变量。所以,您应该首先创建数组,然后使用$request->role\u id上的foreach循环将值分配给array。此外,验证中还有另一个错误。如果我使用'role_id'=>'required | integer',而不是'role_id'=>'required',我得到的错误是角色id不是整数。@AliAnwar错误是什么??您应该在问题中包含实际的错误消息当我验证整数时,错误是角色id不是整数。请将其更改为“角色id.*”=>“必需”,role_id是数组的集合,您应该使用循环运行该数组,然后插入到users role表中,因为用户有多个角色,您需要将它们保存在另一个表中,如user_RoleError在这里$user->role_id=$request->role_id;在这一行中,您将数组$request->role\u id分配给单个变量。所以,您应该首先创建数组,然后使用$request->role\u id上的foreach循环将值分配给array。此外,验证中还有另一个错误。如果我使用'role_id'=>'required | integer',而不是'role_id'=>'required',我得到的错误是角色id不是整数。@AliAnwar错误是什么??您应该在问题中包含实际的错误消息当我验证整数时,错误是角色id不是整数。您已经正确地指出了问题。我尝试了你的代码,但再次出现语法错误。我在验证中也有另一个错误。如果我使用'role_id'=>'required | integer',而不是'role_id'=>'required',我得到的错误是角色id不是整数。我见过许多人使用多对多关系以相同的方式添加数据。如果控制器想要整数类型的角色\u id,那么您应该从视图中传递整数。这是观点的问题。我正在关注这个过程,就像Alex在youtube教程中关注多对多关系一样。我还看过很多关于多对多关系的教程。但就我而言,它不起作用。请在本教程youtube.com/watch?v=BNUYaLWdR04&t=232s中的33:00至33:35检查此项–您已经正确地指出了问题。我尝试了你的代码,但再次出现语法错误。我在验证中也有另一个错误。如果我使用'role_id'=>'required | integer',而不是'role_id'=>'required',我得到的错误是角色id不是整数。我见过许多人使用多对多关系以相同的方式添加数据。如果控制器想要整数类型的角色\u id,那么您应该从视图中传递整数。这是观点的问题。我正在关注这个过程,就像Alex在youtube教程中关注多对多关系一样。我还看过很多关于多对多关系的教程。但就我而言,它不起作用。请检查本教程中的33:00至33:35
ube.com/watch?v=BNUYaLWdR04&t=232s–感谢您回答我的问题。我收到了此代码的另一个错误。SQLSTATE[22007]:无效的日期时间格式:1366不正确的整数值:“[2,3]”列位于第1行SQL:insert into users name、status、role\u id、电子邮件、密码、updated\u at、created\u at values Admin、0、[2,3],admin@xyz.com,$2y$10$DEzjq.XtHPL06FnbtPTa9Oht0Bm5k9eJQT1dh6.A/5TBmVqMGi3yy,谢谢你回答我的问题。我收到了此代码的另一个错误。SQLSTATE[22007]:无效的日期时间格式:1366不正确的整数值:“[2,3]”列位于第1行SQL:insert into users name、status、role\u id、电子邮件、密码、updated\u at、created\u at values Admin、0、[2,3],admin@xyz.com,$2y$10$DEzjq.XtHPL06FnbtPTa9Oht0Bm5k9eJQT1dh6.A/5TBmVqMGi3yy,2018-11-29 06:22:48,2018-11-29 06:22:48谢谢您回答我的问题,但我的代码再次出错。请检查本教程中的33:00至33:35,这是因为您在数据库列role_id中设置的长度超过了您在下拉列表中选择多个角色时的长度。因此,请将其放大为VARCHAR256使用必需的|数组验证为数组。我遵循您的建议。感谢您回答我的问题,但我的代码再次出错。请检查本教程中的33:00到33:35,这是因为您在数据库列role|id中设置的长度超过了您选择更多时的长度下拉列表中有多个角色。因此,根据您的建议,使用所需的|数组作为数组进行验证时,请将其放大。