2017-01-28 2 views
2

Я использую pluck api, чтобы получить два столбца и сделать коллекцию переданной в представлении, чтобы создать раскрывающееся меню.Laravel - Population dropdown с двумя столбцами как тип отображения

Province::pluck('name', 'id'); 

Он отлично работает и отображается название провинции, а идентификатор используется. Но я хочу отобразить два столбца: имя и total_population.

Как это сделать?

ответ

0

К сожалению, метод Eclubent pluck() не позволит вам это сделать, но вы можете подходить к нему с помощью других методов сбора после выполнения обычного запроса. Есть, по крайней мере 2 способа сделать это:

С mapWithKeys() только

$provinces = Province::all(['id', 'name', 'total_population']) 
    ->mapWithKeys(function ($province) { 
     return [$province->id => "{$province->name} ({$province->total_population})"]; 
    }); 

С keyBy() + map()

$provinces = Province::all(['id', 'name', 'total_population']) 
    ->keyBy('id') 
    ->map(function ($province) { 
     return "{$province->name} ({$province->total_population})"; 
    }); 

лично я предпочитаю последний, но вы можете выбрать любой из них. :)