Zubair
Zubair

Reputation: 295

Array to string conversion using laravel

I am trying to send a multi user-id into the database when I select users from the checkbox then I click to submit so I face error Array to string conversion how can I resolve this issue? please help me thanks.

please see error https://flareapp.io/share/17DKWRPv

controller

public function adduseraction(REQUEST $request)
{  
    $useradd=$request->get('userid');
    $checkid=$request->get('multiusersid');
    $user=Users_permissions::create([             
        'user_id'=>$useradd,
        'user_Access_id'=> $checkid
    ]);    
    $user->save();
}

html view

<div class="card card-success">
    <div class="card-header">
        <h3 class="card-title">Users Permission </h3>
    </div>
    <br>
    <form action="{{route('adduseraction')}}" method="post">
        {{ csrf_field() }}
        <div class="col-sm-4">
            <select name="userid" class="form-control">
                @foreach($users as  $user)
                <option  value="{{$user->id}}">{{$user->name}}</option>           
                @endforeach
            </select>
        </div>
        <div class="card-body">
            <!-- Minimal style -->
            <div class="row">
            @foreach($users as  $user)
                <div class="col-sm-2">
                    <div class="form-check">
                    <input type="checkbox" name="multiusersid[]"  value="{{$user->id}}" class="form-check-input" > 
                    <h5 style="position:relative;left:10px;">{{$user->name}}</h5>
                    </div>
                    <!-- checkbox -->
                </div>
            @endforeach
        </div>
        <!-- /.card-body -->
        </div>
        <div class="card-footer">
            <button type="submit" name="btnsubmit" class="btn btn-primary col-md-2 
            center">Submit</button>
        </div>
    </form>
</div>
<!-- /.content-wrapper -->

Route

Route::post('adduseraction','AdminController@adduseraction')->name('adduseraction');

** current status **

{"_token":"4Z3ISznqKFXTMcpBKK5tUgemteqxuJjQpKF8F0Ma","userid":"6","multiusersid":["2","5","7"],"btnsubmit":null}

Upvotes: 4

Views: 2913

Answers (3)

Alex Mac
Alex Mac

Reputation: 923

It is expecting a string and you are passing an array of ids. You may want to change the database to json or do json_ecode(checkid). Which will stringify your array. then you can store. However, remember you will need to convert it back with typecasting or manually doing it.

example:

public function adduseraction(REQUEST $request)
{  
   $useradd=$request->get('userid');
   $checkid=$request->get('multiusersid');
   $user=Users_permissions::create([             
        'user_id'=>$useradd,
        'user_Access_id'=> json_encode($checkid)
   ]);    
   // $user->save(); // yes obviously not needed
 }

Upvotes: 0

Naeem Ijaz
Naeem Ijaz

Reputation: 825

Here is your solution

public function adduseraction(REQUEST $request)
        {  
          $useradd=$request->get('userid');
          $checkid=implode(",", $request->get('multiusersid'));
          Users_permissions::create([             
               'user_id'=>$useradd,
               'user_Access_id'=> $checkid
            ]);
         }

Upvotes: 0

VIKAS KATARIYA
VIKAS KATARIYA

Reputation: 6005

use implode($checkid, ',');

public function adduseraction(REQUEST $request)
{  
   $useradd=$request->get('userid');
   $checkid=$request->get('multiusersid');
   $user=Users_permissions::create([             
        'user_id'=>$useradd,
        'user_Access_id'=> implode($checkid, ',');
   ]);    
 }

Change in your Users_permissions model

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Users_permissions extends Model
{
     protected $table = 'userspermissions';
     protected $fillable = [
        'user_id','user_Access_id'
    ];
}

Upvotes: 4

Related Questions