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

新手上路,请多包涵

我已经浏览了可以在 youtube、stakoverflow 和其他网站上找到的所有解决方案。我正在使用 Select2 添加多个角色,但我始终遇到相同的错误。

 <select id="role" name="role_id[]" multiple='multiple'
        class="form-control js-example-basic-multiple">
    @foreach($roles as $role)
        <option value="{{$role->id}}">{{$role->name}}</option>
    @endforeach
</select>

DD 函数显示完美结果,但之后显示错误。

在此处输入图像描述 在我添加名称为“role_id[]”的[]之前,它可以完美运行。形式行动如下。

 public function store(Request $request)
{
    $this->validate($request, [
        'name'=> 'required|string|max:225',
        'status'=> 'required',
        'role_id'=> 'required',
        '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->role_id = $request->role_id;
    $user->email = $request->email;
    $user->password = $password;
    $user->remember_token;
    $user->save();
    // $user->roles()->sync($request->roles, false);
    return back()->with('message', 'User added successfully!!');
}

如果我验证整数’role_id’=>‘required|integer’,它会显示错误 在此处输入图像描述

迁移如下

 public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->unsignedInteger('role_id')->default(1);
            $table->boolean('status')->default(0);
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

原文由 Ali Anwar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 976
2 个回答

由于您有角色数据透视表而不是用户表中的 role_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!!');
}

原文由 Leena Patel 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果你想为你的 .js 代码输出一个数组,你可以使用

@json($数组)

从 Laravel 5.5 开始

原文由 Adam 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题