Laravel: 使用与选项名称相同的列及其在 select box/drop-down 中的值?

Laravel: Use same column as option name and its value in select box/drop-down?

我正在尝试在 Laravel 中创建一个带有 select 框的表单。

查看

{{ Form::select('cmp_type', $cmp_types, null, $attributes = ['class' => 'form-control']) }}

控制器

public function showAddCompany()
{
    $cmp_types = cmpTypes::where('status', true)->pluck('type');

    return view('addCompany', compact('cmp_types'));
}

这正在生成一个 select 框。

<select class="form-control" id="cmp_type" name="cmp_type">
    <option value="0">public</option>
    <option value="1">pvt Ltd</option>
    <option value="2">LLP</option>
    <option value="3">NPO</option>
    <option value="4">partnership</option>
    <option value="5">proprietorship</option>
    <option value="6">one person</option>
</select>

我怎样才能让 select 盒子变成这样?:

<select class="form-control" id="cmp_type" name="cmp_type">
    <option value="public">public</option>
    <option value="pvt Ltd">pvt Ltd</option>
    <option value="LLP">LLP</option>
    <option value="NPO">NPO</option>
    <option value="partnership">partnership</option>
    <option value="proprietorship">proprietorship</option>
    <option value="one person">one person</option>
</select>

我相信发生的事情是,当您调用 pluck 时,您将返回一个数值数组(集合?),并且这些数字键用于 value 属性 并且所述键的实际值被用作显示,如果你这样做了怎么办:

$cmp_types = cmpTypes::where('status' , true )->pluck('type');
$cmp_types = array_combine($cpm_types, $cmp_types);

阅读Material

array_combine

array_combine() 帮助了我。

解决方法是:

public function showAddCompany()
    {
        $cmp_types_obj = cmpTypes::where('status' , true )->pluck('type');
        $cmp_types = json_decode($cmp_types_obj);
        $cmp_types = array_combine($cmp_types, $cmp_types);
        return view('addCompany', compact('cmp_types'));
    }

我的查询正在返回一个对象,所以我先将它转换成一个数组,然后将它与自身组合以获得一个关联数组

['public']=>'public,['private']=>'private',...