Home > front end >  Storing attributes of a multiple models, to single array in laravel
Storing attributes of a multiple models, to single array in laravel

Time:04-25

I have the following eloquent in my controller,

$getJobs=JobTitle::where('department_id',DepartmentUser::where('user_id', $user->id)->first()->department_id)->get();

This gives me following collection

Illuminate\Database\Eloquent\Collection {#2970 ▼
  #items: array:3 [▼
    0 => App\JobTitle {#2967 ▶}
    1 => App\JobTitle {#2968 ▶}
    2 => App\JobTitle {#2962 ▶}
  ]
  #escapeWhenCastingToString: false
}

And one model element looks like this

1 => App\JobTitle {#2968 ▼
      #connection: "mysql"
      #table: "job_titles"
      #primaryKey: "id"
      #keyType: "int"
       incrementing: true
      #with: []
      #withCount: []
       preventsLazyLoading: false
      #perPage: 15
       exists: true
       wasRecentlyCreated: false
      #escapeWhenCastingToString: false
      #attributes: array:9 [▼
        "id" => 898
        "title" => "driver"
        "company_id" => 635
        "department_id" => 252
        "created_by" => null
        "created_at" => "2022-04-20 05:30:38"
        "updated_at" => "2022-04-20 05:30:38"
        "deleted_at" => null
        "archived_at" => null
      ]
      #original: array:9 [▶]
      #changes: []
      #casts: array:2 [▶]
      #classCastCache: []
      #attributeCastCache: []
      #dates: []
      #dateFormat: null
      #appends: []
      #dispatchesEvents: []
      #observables: []
      #relations: []
      #touches: []
       timestamps: true
      #hidden: []
      #visible: []
      #fillable: array:3 [▶]
      #guarded: array:1 [▶]
       archives: true
      #forceDeleting: false
    }

Now I want to store all the job title (title) value's into single array

"title" => "driver"

In the above scenario, I have array elements and therefore I need store all three respective job titles to one single array...

$jobs = ['driver', 'chef', 'engineer'];

I tried adding an foreach, but it was giving me the following error,

@foreach ($getJobs as $getJob)
              dd ($getJob->title);
            @endforeach

ParseError syntax error, unexpected token "foreach"

What is the best way to achieve this?

CodePudding user response:

You can simply loop on $getJobs and collect the title names in an array like below:

<?php

$getJobs = JobTitle::where('department_id',DepartmentUser::where('user_id', $user->id)->first()->department_id)->get();

$titles = [];

foreach($getJobs as $job){
   $titles[] = $job->title;
}

dd($titles);
  • Related