laravel错误:数组到字符串的转换 [英] laravel Error: Array to string conversion

查看:81
本文介绍了laravel错误:数组到字符串的转换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经经历了在youtube,stakoverflow和其他网站上可以找到的所有解决方案.我正在使用Select2添加多个角色,但是我一直遇到相同的错误.

I have gone through every solution I could find over youtube, stakoverflow and other websites. I am using Select2 to add multiple roles but I a consistently getting the same error.

<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函数显示完美结果,但之后显示错误.

DD function is showing perfect result but after that it shows error.

它可以正常工作,直到我添加名称为"role_id []"的[]. 形式动作如下.

It works perfectly untill I add [] with the name="role_id[]". form action is as under.

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',则显示错误

If I validate for integer 'role_id'=> 'required|integer', it shows error

迁移与

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();
        });
    }

推荐答案

由于您拥有角色的数据透视表,因此您的用户表中不需要role_id列

As you have pivot table for roles than you dont need role_id column in your users table

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!!');
}

这篇关于laravel错误:数组到字符串的转换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆