Laravel,如何获取select :: form选择的值而不是id?

时间:2017-12-12 04:54:27

标签: php laravel

查看

{!! Form::open(['method'=>'get', 'class' => 'report-filter']) !!}
  {!!  Form::select('years', $available_year, null, ['class'=>'form-control', 'placeholder'=>'--- Choose Year ---']) !!}
{!! Form::close() !!}

控制器

$available_year = DB::table('purchases')
                    ->selectRaw('YEAR(purchase_date) as year')
                    ->groupBy(DB::raw("YEAR(purchase_date)"))
                    ->orderBy('purchase_date')
                    ->pluck('year');

每次我尝试发送请求时,输入请求都会发送年份的ID,但我只想获取选择框内的值。下面的图像显示了我想要获得的带有大红色圆圈的选择选项数组。

enter image description here

例如,如果我选择2009,那么我想要的是输入请求发送2009而不是id。

enter image description here

3 个答案:

答案 0 :(得分:4)

做一个pluck('year', 'year')。这将返回一个数组,其中包含index作为索引/键以及返回数组的值

答案 1 :(得分:1)

您可以使用lists来获取具有键/值对的数组

$available_year = DB::table('purchases')
    ->selectRaw('YEAR(purchase_date) as year')
    ->groupBy(DB::raw("YEAR(purchase_date)"))
    ->orderBy('purchase_date')
    //->lists(your_value, your_key)
    ->lists('year', 'year'); //<- check this line

希望这有帮助!

答案 2 :(得分:0)

您需要将带有key/value or associative array的数组传递到您的选择小部件Form::select,此时您的键是索引编号,并且值在传递到视图之前的年份将您的$available_year转换为

array(
    '2002' => '2002',
    '2003' => '2003'
    .....
)

这样的东西
$years = [];
foreach($available_year as $year){
    $years[$year] = $year;
}

通过$years查看

 {!!  Form::select('years', $years, null, ['class'=>'form-control', 'placeholder'=>'--- Choose Year ---']) !!}

Drop-Down Lists