【问题标题】:Get the value instead of key with Laravel collection使用 Laravel 集合获取值而不是键
【发布时间】:2018-08-09 08:18:05
【问题描述】:
$job_types = DB::table('jobs')->pluck('job_type')->unique();

上面的代码返回一个集合,如下所示。

同样在 Laravel Blade 代码下方,使用上层集合制作选择列表。

<!-- Job Type Field -->
<div class="form-group col-sm-4" >
    {!! Form::label('job_type', 'Emne:') !!}        
    {!! Form::select('job_type', $job_types, null, ['class' => 'form-control', 'id' => 'job_type']) !!}
</div>

这是作为选择框的返回视图。

所以我的目标是在选择框中发布选定的值。 但是我将这些键(例如 0、2、17、6)作为数据库中的值。 我仍然只有 KEY 而不是 Value

如何获得将数据插入数据库的值?

【问题讨论】:

    标签: php laravel laravel-blade laravel-collection


    【解决方案1】:

    见:https://laravel.com/docs/4.2/html#drop-down-lists

    Form::select('size', array('L' => 'Large', 'S' => 'Small'));
    

    数组键将被视为select的值。

    所以,您的问题是您的 $job_types 数组的格式不符合您的请求。

    如果您想将job_type 作为select 值,请确保它们是$job_types 键。

    变化:

    $job_types = DB::table('jobs')-&gt;pluck('job_type')-&gt;unique();

    $job_types = DB::table('jobs')-&gt;pluck('job_type', 'job_type')-&gt;unique();

    【讨论】:

    • 感谢您的详细回答和解释。我接受了对 Matei 的回答,因为首先出现了相同的答案。:)
    【解决方案2】:

    您可以简单地将第二个参数传递给 pluck 方法:

    $job_types = DB::table('jobs')->pluck('job_type', 'job_type')->unique();
    

    但是,我认为您应该重新考虑存储值的做法,因为它可能会导致 database normalization 违规。

    【讨论】:

    • @您的回答非常有用,在我的情况下如何避免“数据库规范化”?:)
    • 您首先可以做的一件事是避免重复条目。话虽如此,我认为这些工作类型应该属于一个单独的表。工作表应该有一个通过列 job_type_id 引用 job_tyoes 表的外键
    【解决方案3】:

    使用groupBy():

    $job_types = DB::table('jobs')->groupBy('job_type')->pluck('job_type');
    

    【讨论】:

    • 它没有正常工作。我使用上面的代码,谢谢。
    猜你喜欢
    • 2017-07-21
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多