In this tutorial we will see the use of Eloquent Pluck
method to fetch specific key values from model and populate values into Select box
.
pluck()
method is for Laravel Collection and more frequently for Eloquent Collection. It allows us to fetch values for given key from the collection in array.
Starting from Laravel version 5.3 lists
is deprecated and pluck
method is used. We can say lists
is renamed as pluck
since there is no change in method.
Suppose we have a user model and we want to get only ids and names of users who have not paid the bill.
and we have to populate those names in select box with ids as thier respective values:
1. Define a Route
Route::get('/pendingPayments', 'UserController@pendingPayments');
2. Pluck method to fetch values
We want to get ids of users only who have not paid the bill from the entire user collection.
protected function test(Request $request)
{
$ids = DB::table('users')->orderBy('created_at')
->where('users.paid', 'no')
->pluck('name','license_id');
return view('/pendingPayments')->with(['data' => $ids])
}
Here we will get an array of ids and names in order of "created_at" which have not paid the bill using pluck()
something like following:
3. Populate values in select box
Code of pendingPayments.blade.php
under resources/views
to populate select box. In this option will be the names and value will be the ids of users.
<div class="form-group required mb-3">
<p class='text-sm'> <strong>LicenseID:</strong> </p>
<select name="licenseid" id="licenseid" class="form-select text-sm">
@foreach ($ids as $key => $value)
<option value="{{ $key }}"> {{ $value }} </option>
@endforeach
</select>
</div>
After hitting the specified route , we will get a view something like following :
here is a short description of populating select box using Pluck
method on Eloquent model.