Php 如何使用Laravel将数据加载到Select2中

Php 如何使用Laravel将数据加载到Select2中,php,laravel,jquery-select2,blade,Php,Laravel,Jquery Select2,Blade,我正在尝试将从DB中提取的选定值加载到Select2中。 Id值保存在JSON字段中,该字段包含Id值或我管理为“All”的字段“*” 这是我的控制器方法: $data['field_id'] = array(); $field_id_array = json_decode(User::find($id) -> field_id); if( $field_id_array !== null ) { $field_array = Campo::whereIn('id',$field_

我正在尝试将从DB中提取的选定值加载到Select2中。 Id值保存在JSON字段中,该字段包含Id值或我管理为“All”的字段“*”

这是我的控制器方法:

$data['field_id'] = array();
$field_id_array = json_decode(User::find($id) -> field_id);
if( $field_id_array !== null ) {
    $field_array = Campo::whereIn('id',$field_id_array)->pluck('field_name','id');
    if( in_array( '*' , $field_id_array ) ) {
        $field_array -> prepend( 'All' , '*' );
    }
    $data['field_id'] = $field_array;
}    
return view('create', $data);
这是我的观点,我正在使用刀片:

<select id="field_id" name="field_id[]" multiple>
    @if(!empty($field_id))
        @foreach($field_id as $f)
            <option value = "{!! $f->id !!}" selected >{!! $f->field_name !!}
            </option>
        @endforeach
    @endif
</select>

@如果(!空($field_id))
@foreach($f字段的id)
{!!$f->field_name!!}
@endforeach
@恩迪夫
显示的错误是:

正在尝试获取非对象的属性

如果我在视图的循环中只使用
{!!$c!!}
,我没有弄错,但是它只显示字段
字段名

我将Select2与ajax搜索结合使用,但我没有发布代码,因为我认为控制器方法中的错误为99.9%

有人知道如何解决这个问题吗?

方法在您的情况下返回一个关联数组,而不是一个对象数组,这就是为什么您的循环应该是这样的:

@foreach($field_id as $id => $field_name)
    <option value = "{{ $id }}" selected >{{ $field_name }}</option>
@endforeach
@foreach($field\u id as$id=>$field\u name)
{{$field_name}
@endforeach

如果您使用的是
blade
并使用
pulk
创建只有两种类型的数组。可以使用以下语法将$field_数组传递给视图:

{{Form::select('field_id[]',
                $field_array,
                '', array('class'=>'your-class',
                          'id' => 'field_id',
                          'multiple'))}}