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 →
Agent Run Observability in Laravel AI SDK 0.11 image

Agent Run Observability in Laravel AI SDK 0.11

Read article
Debounced Queued Event Listeners in Laravel image

Debounced Queued Event Listeners in Laravel

Read article
Statamic Mailables Viewer Previews Laravel Emails in the Control Panel image

Statamic Mailables Viewer Previews Laravel Emails in the Control Panel

Read article
Laravel Tackle: Run an AI Coding Agent in Your Laravel App image

Laravel Tackle: Run an AI Coding Agent in Your Laravel App

Read article
Queue::forward(): Reroute Laravel Queues in One Place image

Queue::forward(): Reroute Laravel Queues in One Place

Read article
Laravel Read-Through Filesystem: Lazy Storage Migration image

Laravel Read-Through Filesystem: Lazy Storage Migration

Read article