Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Zoul's avatar
Level 5

Array to string conversion with spatie laravel-translatable package

HI folks, I have array to string conversion error in migration, i'm trying to implement spatie laravel-translatable package. I have a member table, the Model Member is:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Spatie\Translatable\HasTranslations;
class Member extends Model
{
    use HasTranslations;  
    protected $guarded = [];
    protected $dateFormat = 'd.m.Y';
    protected $table = 'members';    
    public $translatable = ['name','about','company','country','language','role','job','address','nationality'];
    
}

in the MemberController

   public function addFormMember(Request $request)
    {
            $data = [];
   
            if (!$request->has('main_view'))
            $request->request->add(['main_view' => 0]);
            else
            $request->request->add(['main_view' => 1]);

            if (!$request->has('member_view'))
            $request->request->add(['member_view' => 0]);
            else
            $request->request->add(['member_view' => 1]);


            $fileName = "";
            if ($request->has('photo')) {
    
                $fileName = uploadImage('members', $request->photo);
            }
        
            $data['name']        = ['en' => $request->name, 'ar' => $request->name_ar, 'fr' => $request->name_fr];
            $data['country']     = ['en' => $request->country, 'ar' => $request->country_ar, 'fr' => $request->country_fr];
            $data['address']     = ['en' => $request->address, 'ar' => $request->address_ar, 'fr' => $request->address_fr];
            $data['nationality'] = ['en' => $request->nationality, 'ar' => $request->nationality_ar, 'fr' => $request->nationality_fr];
            $data['company']     = ['en' => $request->company, 'ar' => $request->company_ar, 'fr' => $request->company_fr];
            $data['job']         = ['en' => $request->job, 'ar' => $request->job_ar, 'fr' => $request->job_fr];
            $data['Language']    = ['en' => $request->Language, 'ar' => $request->Language_ar, 'fr' => $request->Language_fr];
            $data['role']        = ['en' => $request->role, 'ar' => $request->role_ar, 'fr' => $request->role_fr];
            $data['about']       = ['en' => $request->about, 'ar' => $request->about_ar, 'fr' => $request->about_fr];
            
            $data['photo'] = $fileName;
            $data['email'] = $request->photo;
            $data['telephone'] = $request->telephone;
            $data['twitter'] = $request->twitter;
            $data['facebook'] = $request->facebook;
            $data['instagram'] = $request->instagram;
            $data['membership_date'] = $request->membership_date;
            $data['main_view'] = $request->main_view;
            $data['member_view'] = $request->member_view;

            Member::create($data);
            
            return redirect()->route('add.member')->with(['success' => 'Saved Successfully']);
    }

in add member blade template

  <form action="{{ route('add.form.member') }}" method="POST" enctype="multipart/form-data" novalidate>
                    @csrf  
              
                    <input type="hidden" name="id" value="">
                    <div class="row">

                         {{-- <div class="col-12 col-sm-4"> col-md-4 mb-3 --}}
                      
                     
                         
                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">Name ar</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="name_ar" value="{{old('name')}}">
                                </div>
                                @error('name_ar')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>
                            
                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">Name en</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="name">
                                </div>
                                @error('name')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>

                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">Name fr</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="name_fr">
                                </div>
                                @error('name_fr')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>
                            
                        </div>

                        <div class="row ">
                            
                                <div class="form-group col-md-4">
                                    <div class="controls">
                                        <label for="complaintinput3">Date of Birth</label>
                                        <input type="date" name="birthday" id="complaintinput3" class="form-control round" name="birthday">
                                    </div>
                                    @error('birthday')
                                    <span class="text-danger">{{ $message }}</span>
                                    @enderror
                                </div>
                                <div class="form-group col-md-4">
                                    <div class="controls">
                                        <label for="complaintinput3">Membership Date</label>
                                        <input type="date" id="complaintinput3" class="form-control round" name="membership_date">
                                    </div>
                                    @error('membership_date')
                                    <span class="text-danger">{{ $message }}</span>
                                    @enderror
                                </div>

                                <div class="form-group col-md-4" style="margin-top: 15px">
                                    <div class="controls">
                                    <label for="complaintinput1">
                                        <input type="checkbox" name="main_view" value="1">
                                        <span style="margin: 5px">Main view</span>
                                    </label>
                                    </div>

                                    <label for="complaintinput1">
                                        {{-- <input type="checkbox" name="member_view" value="1" checked > --}}
                                        <input type="checkbox" name="member_view" value="1" >
                                        <span style="margin: 5px">Member view</span>
                                    </label>      
                                </div>
                        </div> 

                        <div class="row ">
                            
                            <div class="form-group col-xl-12 col-md-4">
                                <div class="controls">
                                    <label for="complaintinput3">Email</label>
                                    <input type="text" name="email" id="complaintinput3" class="form-control round">
                                </div>
                                @error('email')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>
                    </div> 
                         
                        </div>

                        <div class="row">

                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">Country ar</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="country_ar">
                                </div>
                                @error('country_ar')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>
                        
                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">Country en</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="country">
                                </div>
                                @error('country')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>

                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">Country fr</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="country_fr">
                                </div>
                                @error('country_fr')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>
                     
                            
                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">Address ar</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="address_ar">
                                </div>
                                @error('address_ar')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>
                        
                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">Address en</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="address">
                                </div>
                                @error('address')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>

                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">Address fr</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="address_fr">
                                </div>
                                @error('address_fr')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>

                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">nationality ar</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="nationality_ar">
                                </div>
                                @error('nationality_ar')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>
                        
                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">nationality en</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="nationality">
                                </div>
                                @error('nationality')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>

                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">Nationality fr</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="nationality_fr">
                                </div>
                                @error('nationality')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>
                            
                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">Company ar</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="company_ar">
                                </div>
                                @error('company_ar')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>
                             
                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">Company en</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="company">
                                </div>
                                @error('company')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>
                        
                         

                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">Company fr</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="company_fr">
                                </div>
                                @error('company_fr')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>

                                      
                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">Job ar</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="job_ar">
                                </div>
                                @error('job_ar')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>
                        
                         

                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">Job en</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="job">
                                </div>
                                @error('job')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>

                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">Job fr</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="job_fr">
                                </div>
                                @error('job_fr')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>




                            <div class="form-group col-md-4">
                          
                                <div class="controls">
                                    <div class="form-group">
                                        <label for="complaintinput1">Language ar</label>
                                        <input type="text" name="language_ar"  id="complaintinput1" class="tm-input form-control round tm-input-info "/>
                                    </div>
                                </div>
                                @error('language_ar')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                              
                            </div>

                            <div class="form-group col-md-4">
                          
                                <div class="controls">
                                    <div class="form-group">
                                        <label for="complaintinput1">Language en</label>
                                        <input type="text" name="language"   id="complaintinput1" class="tm-input form-control round tm-input-info "/>
                                    </div>
                                </div>
                                @error('language')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                              
                            </div>

                         
                            <div class="form-group col-md-4">
                          
                                <div class="controls">
                                    <div class="form-group">
                                        <label for="complaintinput1">Language fr</label>
                                        <input type="text" name="language_fr" placeholder=" " id="complaintinput1" class="tm-input form-control round tm-input-info "/>
                                    </div>
                                </div>
                                @error('language_fr')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                              
                            </div>


                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">Role ar</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="role_ar">
                                </div>
                                @error('role_ar')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>
                        
                         

                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">Role en</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="role">
                                </div>
                                @error('role')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>

                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">Role fr</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="role_fr">
                                </div>
                                @error('role_fr')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>


                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">instagram</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="instagram">
                                </div>
                                @error('instagram')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>
                        
                         

                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">facebook</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="facebook">
                                </div>
                                @error('facebook')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>

                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">twitter</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="twitter name" name="twitter">
                                </div>
                                @error('twitter')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>
                  
                           
                     
                        </div>
                        <div class="row">
                            <div class="form-group col-xl-6 col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">Telephone</label>
                                    <input type="text" id="complaintinput1" class="form-control round" placeholder="company name" name="telephone">
                                </div>
                                @error('telephone')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>

                            <div class="form-group col-xl-6 col-md-4" style="margin-top: 10px">
                                <label for="complaintinput1"></label>
                                <div class="controls">
                        
                                    <label id="projectinput8" class="file center-block">Select file
                                        <input type="file" id="file" name="photo">
                                        <span class="file-custom"></span>
                                    </label>
                                </div>

                                @error('photo')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                          
                            </div>

                        </div>
                             
                      
                        
                         

                        <div class="row">

                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">About in arabic</label>
                                    <textarea id="complaintinput5" rows="5" class="form-control round" name="about_ar" placeholder="details"></textarea>
                                </div>
                                @error('about_ar')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>
                        
                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">About in english</label>
                                    <textarea id="complaintinput5" rows="5" class="form-control round" name="about" placeholder="details"></textarea>
                                </div>
                                @error('about')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>

                            <div class="form-group col-md-4">
                                <div class="controls">
                                    <label for="complaintinput1">About in french</label>
                                    <textarea id="complaintinput5" rows="5" class="form-control round" name="about_fr" placeholder="details"></textarea>
                                </div>
                                @error('about_fr')
                                <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>
                            
                            <div class="col-12 d-flex flex-sm-row flex-column justify-content-end mt-1">
                            <button type="submit" class="btn btn-primary glow mb-1 mb-sm-0 mr-0 mr-sm-1">Save
                            changes</button>
                            {{-- <button type="reset" class="btn btn-light">Cancel</button> --}}
                            </div>
                    </div>

                                                
             
                  

                    
                    </div>
                
                </form>

I would appreciate so much your help !

0 likes
3 replies
Snapey's avatar

I have array to string conversion error in migration

Where is your migration?

show complete error and the line it is on

1 like
Zoul's avatar
Level 5

Thanks loat Snapey for your support !

Here is migration table code

ErrorException
Array to string conversion
http://127.0.0.1:8000/ar/admin/member/add/form

  public function up()
    {
        Schema::create('members', function (Blueprint $table) {
            $table->increments('id');
            $table->text('name')->unique();
            $table->string('email')->unique();
            $table->text('country');
            $table->text('address');
            $table->text('nationality');
            $table->date('birthday')->nullable();
            $table->text('company')->nullable();
            $table->string('telephone')->nullable();
            $table->text('language');
            $table->string('twitter')->nullable();
            $table->string('facebook')->nullable();
            $table->string('instagram')->nullable();
            $table->date('membership_date')->nullable();
            $table->text('about')->nullable();///
            $table->text('role');
            $table->string('photo')->nullable();
            $table->text('job')->nullable();
            $table->boolean('main_view')->default(true);
            $table->boolean('member_view')->default(true);
            $table->timestamps();
        });
    }

Here is error shown in browser

ErrorException
Array to string conversion
http://127.0.0.1:8000/ar/admin/member/add/form

Illuminate\Foundation\Bootstrap\HandleExceptions::handleError
D:\xampp\htdocs\vendor\laravel\framework\src\Illuminate\Support\Str.php:488
    /**
     * Replace a given value in the string sequentially with an array.
     * @param  string  $search
     * @param  array<int|string, string>  $replace
     * @param  string  $subject
     * @return string

     */
    public static function replaceArray($search, array $replace, $subject)
    {
        $segments = explode($search, $subject);

        $result = array_shift($segments);

        foreach ($segments as $segment) {

            $result .= (array_shift($replace) ?? $search).$segment;
        }
        return $result;
    }

    /**

     * Replace the first occurrence of a given value in the string.
     * @param  string  $search
     * @param  string  $replace
     * @param  string  $subject
     * @return string
     */
    public static function replaceFirst($search, $replace, $subject)
    {

Zoul's avatar
Zoul
OP
Best Answer
Level 5

This is not the best way but i could avoid the error by adding to $request variable before storing it in db,

public function addFormMember(Request $request)
{
        $data = [];
        $member = new Member();
        if (!$request->has('main_view'))
        $request->request->add(['main_view' => 0]);
        else
        $request->request->add(['main_view' => 1]);

        if (!$request->has('member_view'))
        $request->request->add(['member_view' => 0]);
        else
        $request->request->add(['member_view' => 1]);
        $fileName = "";
        if ($request->hasFile('photo')) {
           $image = $request->file('photo');
           $fileName = $image->getClientOriginalName();
           $image_resize = Image::make($image->getRealPath())->resize(300, 200);
           $image_resize->save(public_path('images/members/'. $fileName));
        }

        $name    = array(['en' => $request->name, 'ar' => $request->name_ar, 'fr' => $request->name_fr]);
        $country     = array(['en' => $request->country, 'ar' => $request->country_ar, 'fr' => $request->country_fr]);
        $address    = array(['en' => $request->address, 'ar' => $request->address_ar, 'fr' => $request->address_fr]);
        $nationality = array(['en' => $request->nationality, 'ar' => $request->nationality_ar, 'fr' => $request->nationality_fr]);
        $company     = array(['en' => $request->company, 'ar' => $request->company_ar, 'fr' => $request->company_fr]);
        $job         = array(['en' => $request->job, 'ar' => $request->job_ar, 'fr' => $request->job_fr]);
        $language  = array(['en' => $request->language, 'ar' => $request->language_ar, 'fr' => $request->language_fr]);
        $role      = array(['en' => $request->role, 'ar' => $request->role_ar, 'fr' => $request->role_fr]);
        $about     = array(['en' => $request->about, 'ar' => $request->about_ar, 'fr' => $request->about_fr]);
 
        //$member->member_view
        $member->photo = $fileName;
        $member->email = $request->email;
        $member->telephone = $request->telephone;
        $member->twitter = $request->twitter;
        $member->facebook = $request->facebook;
        $member->instagram = $request->instagram;
        $member->membership_date = $request->membership_date;
        $member->birthday = $request->birthday;
        $member->main_view = $request->main_view;
        $member->member_view = $request->member_view;

        $member->setTranslations('name', $name);
        $member->setTranslations('country', $country);
        $member->setTranslations('address', $address);
        $member->setTranslations('nationality', $nationality);
        $member->setTranslations('company', $company);
        $member->setTranslations('language', $language);
        $member->setTranslations('job', $job);
        $member->setTranslations('role', $role);
        $member->setTranslations('about', $about);
        $member->save();
        return redirect()->route('add.member')->with(['success' => 'Saved Successfully']);
    }

Thanks a lot Snapey for your support !

Please or to participate in this conversation.