Laravel Tutorials

Laravel Tip – Form::select

Published

In yesterdays digest I included the tip of using array_pluck with the Form::select helper. I had a few replies and questions about it so I wanted to try and clarify any confusion I may have caused.

In the email I used the following example:

Form::select('user', array_pluck(Users::all(), 'username', 'id');

A few things are wrong with this for any “real” project. You should really never call Users::all() from your view. I did it this way to keep it simple for the email. Ideally in your controller or route you will assign this, pass it to your view, and then call your Form::select. Here is an example:

// Home Route
Route::get('/', function()
{
$users = Users::all();
return View::make('home', compact('users'));
});
 
// Home View
Form::select('user', array_pluck($users, 'username', 'id'));

The question is why use this over the simpler “lists” method? To answer this, both methods are fine and it really depends on the context of your results. Most of the time you are not going to already have a result set so calling the simpler lists method is ideal.

$users = Users::lists('username', 'id');
Form::select('user', $users);

However in certain circumstances you may need all the results for another area. So instead of doing two queries you can pluck from what you already have. For an example of this lets pretend we are building a site to sell books. In the sidebar we have a list of categories to filter and in the main content we have a search bar with an input and category select list.

There is no need to perform two queries for our list of categories. Just do it once and process the same results into the select options.

As with everything in the crazy world of development this is just one solution to a problem. I guarantee the community could come up with at least five more.

Eric L. Barnes photo

Eric is the creator of Laravel News and has been covering Laravel since 2012.

Sponsored

laravelcloud logo
Laravel Cloud

Easily create and manage your servers and deploy your Laravel applications in seconds.

Visit Laravel Cloud

The latest

View all →
CPX: The Composer Package Executor for PHP image

CPX: The Composer Package Executor for PHP

Read article
Laravel AI SDK Adds Human-in-the-Loop Tool Approval image

Laravel AI SDK Adds Human-in-the-Loop Tool Approval

Read article
Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals image

Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals

Read article
Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs image

Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs

Read article
Blade Formatting in Laravel Pint image

Blade Formatting in Laravel Pint

Read article
Inertia DevTools Is Now on the Chrome Web Store image

Inertia DevTools Is Now on the Chrome Web Store

Read article